我意识到这有点晚了,但我想我会分享我刚刚经历的发现。
要在 ASP.Net 母版页环境中使用 jQuery 验证,您必须记住占位符会更改包括名称在内的所有内容。由于 .validate() 非常依赖每个字段的名称,因此您必须获取每个字段的客户端名称。由于这可能会根据您的占位符而改变(我的最终看起来像 name="ctl00$ContentPlaceHolder1$FirstName"),因此您的代码应该如下所示:
$(document).ready(function () {
$('form').validate({
rules: {
<%= FirstName.Name %>: {
required: true,
minlength: 2,
maxlength: 25
},
<%= LastName.Name %>: {
required: true
},
<%= Email1.Name %>: {
required: true,
email: true
},
<%= Email2.Name %>: {
required: true,
email: true,
equalTo: "#<%= Email1.ClientID %>"
},
<%= Password1.Name %>: {
required: true,
minlength: 7
},
<%= Password2.Name %>: {
required: true,
minlength: 7,
equalTo: "#<%= Password1.ClientID %>"
}
},
messages:{
<%= FirstName.Name %>: {
required: "Please enter your first name.",
minlength: $.validator.format("Your first name must be at least {0} characters.")
},
<%= LastName.Name %>: {
required: "Please enter your last name.",
minlength: $.validator.format("Your last name must be at least {0} characters.")
},
<%= Email1.Name %>: {
required: "Please enter your email address.",
email: "Please enter a valid email address."
},
<%= Email2.Name %>: {
required: "Please confirm your email address.",
email: "Please confirm with a valid email address.",
equalTo: "Email entries do not match."
},
<%= Password1.Name %>: {
required: "Please enter a password",
minlength: $.validator.format("Your password must be at least {0} characters.")
},
<%= Password2.Name %>: {
required: "Please confirm your password.",
equalTo: "Passwords do not match."
}
},
errorClass: "error-label",
wrapper: "li",
errorLabelContainer: "#ErrorSection"
});
});
这段代码直接取自我使用jQuery Validation 1.12.0 版和jQuery 1.11.0 版的工作网页。
编辑:我应该补充一点,我正在验证的所有输入也是 runat="server" 用于服务器端交互。