我想使用带有jQuery验证器的addMethod函数自定义表单的验证,但是当我尝试添加多个方法时,验证器似乎只看第一个方法。
代码如下:
jQuery.validator.addMethod("name", function(value, element) {
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]{2,30}$/.test(value);
}, "please enter a valid name");
jQuery.validator.addMethod("surname", function(value, element) {
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]{1,30}\-?[A-Za-zÀ-ÖØ-öø-ÿ]{1,30}$/.test(value);
}, "please enter a valid surname");
$("#contactform").validate({
rules: {
firstname:{
required: true,
name: true,
minlength: 2,
maxlength: 30
},
lastname:{
required: true,
surname: true,
minlength: 2,
maxlength: 30
}
}
});
问题是,在姓氏中,如果要合并姓氏,我希望添加一个“-”,我尝试了regEx,它的功能完全符合我的意愿,但是即使我将方法称为“字段规则中的“姓””,似乎还是要详细说明“名字”方法!
在此先感谢您的帮助,我真的不明白我在这里缺少什么。
答案 0 :(得分:1)
问题出在您的方法名称上。规则内部的name
属性已经是$.validator
内部的预定义规则,例如minLength
。如果将name
更改为其他任何内容,它将起作用。
JS
$(document).ready(function(){
$.validator.addMethod("named", function(value, element){
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]{2,30}$/.test(value);
}, "Please enter a valid name.");
$.validator.addMethod("surname", function(value, element){
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]{1,30}\-?[A-Za-zÀ-ÖØ-öø-ÿ]{1,30}$/.test(value);
}, "Please enter a valid surname.");
$("#contactform").validate({
rules: {
firstname: {
required: true,
named: true,
minlength: 2,
maxlength: 30
},
lastname:{
required: true,
surname: true,
minlength: 2,
maxlength: 30
}
}
});
});