我一定遗漏了一些明显的东西,但我为此尝试的一切都让我两手空空,所以我有点困惑。
我正在尝试将 jQuery 验证插件与自定义验证方法一起使用,但它似乎被击中或错过。好像可以在一定程度上成功添加规则,但是有些方法没有应用。或者没有应用指定的方法,而是应用了错误的方法。
因此,例如,这很顺利:
$.validator.addMethod("emailValidation",
function(value, element) {
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/.test(value);
},
"Please enter a valid email address."
);
$.validator.addMethod("password",
function(value, element) {
return /[^\s]{6,25}/.test(value);
},
"Please enter a password between 6 and 25 characters long."
);
...
$(function(){
$("#registrationForm").validate({
rules: {
email: {
required: true,
emailValidation: true
},
password: {
required: true,
password: true
},
}
});
});
密码验证和电子邮件验证都有效。
但随后我以完全相同的方式添加了名称验证测试。所以,在密码方法结束的地方,我添加:
$.validator.addMethod("name",
function(value, element) {
return /[^\s]{6,25}/.test(value);
},
"Please enter a valid name."
);
这将验证调用变为:
$(function(){
$("#registrationForm").validate({
rules: {
email: {
required: true,
emailValidation: true
},
password: {
required: true,
password: true
},
studentFirstName: {
name: true
}
}
});
});
突然之间,一切都只验证名称。电子邮件和密码字段现在都使用名称方法进行验证,名称字段也是如此。
这令人困惑!我已经为所有方法添加了 console.log 调用,实际上,并不是一个接一个地被调用——唯一被调用的是名称。
我已经检查并仔细检查了元素选择是否良好。我已经检查过方法本身的一切都很正常。有任何想法吗?