Sunday, March 1, 2015
Username Availability Check in ASP.NET Web Forms with jQuery Validation Plugin
Posted by Duc Nguyen at 6:58 PM<
form
id
=
"form1"
runat
=
"server"
>
<
fieldset
>
<
legend
>Register</
legend
>
<
p
>
<
asp:Label
ID
=
"UserNameLabel"
runat
=
"server"
AssociatedControlID
=
"UserName"
>User Name:</
asp:Label
>
<
asp:TextBox
ID
=
"UserName"
runat
=
"server"
ClientIDMode
=
"Static"
></
asp:TextBox
>
</
p
>
<
p
>
<
asp:Label
ID
=
"PasswordLabel"
runat
=
"server"
AssociatedControlID
=
"Password"
>Password:</
asp:Label
>
<
asp:TextBox
ID
=
"Password"
runat
=
"server"
TextMode
=
"Password"
ClientIDMode
=
"Static"
></
asp:TextBox
>
</
p
>
<
p
>
<
asp:Label
ID
=
"ConfirmPasswordLabel"
runat
=
"server"
AssociatedControlID
=
"ConfirmPassword"
>Confirm Password:</
asp:Label
>
<
asp:TextBox
ID
=
"ConfirmPassword"
runat
=
"server"
TextMode
=
"Password"
ClientIDMode
=
"Static"
></
asp:TextBox
>
</
p
>
<
p
>
<
asp:Button
ID
=
"Button"
runat
=
"server"
Text
=
"Sign Up"
/>
</
p
>
</
fieldset
>
</
form
>
The form has username, password and confirm password fields. I am using ClientIDMode=”Static” for all textboxes so that I could use same name in jQuery.
To call server side method using ajax, we use Remote function of jQuery validation plugin
To add green check for valid fields:
CSS:
<
style
type
=
"text/css"
>
label
{
display:block;
}
input.error
{
border: solid 2px #CC0000;
}
input.valid
{
border: solid 2px green;
}
span
{
margin-left:5px;
}
span.valid
{
width:16px;
height:16px;
color: green;
background:url("http://cdn1.iconfinder.com/data/icons/basicset/tick_16.png") left center no-repeat;
display:inline-block;
}
span.error
{
width: 100%;
color: red;
}
</
style
>
jQuery Validation:
For simplicity, I am using jquery validation plugin from cdn.< script src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js" ></ script > < script src = "http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js" type = "text/javascript" ></ script > |
$( "#<%=form1.ClientID%>" ).validate({ errorElement: 'span' , rules: { UserName: { required: true , remote: function () { return { url: "/Default.aspx/IsUserNameAvailable" , type: "POST" , contentType: "application/json; charset=utf-8" , dataType: "json" , data: JSON.stringify({ userName: $( '#UserName' ).val() }), dataFilter: function (data) { var msg = JSON.parse(data); if (msg.hasOwnProperty( 'd' )) return msg.d; else return msg; } } }, }, Password: { required: true , minlength: 8, }, ConfirmPassword: { required: true , minlength: 8, equalTo: "#Password" } }, messages: { UserName: { required: "User name is Required" , remote: "This user name is already in use" , }, Password: { required: "Password is Required" , minlength: "Password requires at least 8 characters" , }, ConfirmPassword: { required: "Confirm password is Required" , minlength: "Confirm password requires at least 8 characters" , equalTo: "Confirm password must match the Password" , } }, onkeyup: false , onblur: true , onfocusout: function (element) { $(element).valid() } }); |
highlight:
function
(element, errorClass, validClass) {
$(element).parent().find(
'span'
).remove();
$(element).addClass(errorClass).removeClass(validClass);
},
unhighlight:
function
(element, errorClass) {
$(element).removeClass(errorClass);
},
success:
function
(label) {
var
$label = $(label);
$(label).nextAll().remove();
if
(!$label.hasClass(
'valid'
)) {
$label.addClass(
'valid'
);
}
$label.removeClass(
'error'
);
}
0 Comments:
Subscribe to:
Post Comments (Atom)