我肯定想念一些明显的东西,但是我为此所做的一切都让我无所事事,所以我有些困惑。
我正在尝试将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调用,的确,并不是一个被另一个调用,而是唯一被调用的名字是name。
我检查并再次检查了元素选择是否正确。我已经检查了方法本身是否具有通用性。有任何想法吗?
我不确定name
JavaScript中是否是保留字,但是由于插件使用name属性来跟踪输入,因此也许您应该使用更具创意的字来命名您的自定义方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句