我的验证码是这样的:
$("#form").validate({
rules: {
...
phone_number: {
phoneUS: true,
phonesUK: true,
phoneNL: true
}
...
}
});
如您所见,我使用多个冲突的规则(所有电话号码)。我的目的是涵盖尽可能多的电话号码语法的验证。
根据我的上述代码,我使用美国,英国和NL电话号码验证,因为默认情况下,这些验证与additional-methods.js
一起打包。
但是,它不起作用。它不只是一个电话号码不起作用;这三种类型都不起作用。我尝试输入:
所有这些都是我在网上找到的假的,生成的数字。无论如何,他们都没有通过验证,我认为这是因为我包含了所有三个验证规则。
所以,问题是,如何让多个验证规则覆盖尽可能多的区域,同时避免冲突导致系统崩溃?
答案 0 :(得分:-1)
你应该尝试定义这样的电话号码规则:
以下是一个简单示例:http://jsfiddle.net/dSz5j/
$(document).ready(function () {
jQuery.validator.addMethod("phoneUS", function (phone_number, element) {
phone_number = phone_number.replace(/\s+/g, "");
return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(\+?1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid us phone number");
/*
jQuery.validator.addMethod("phonesUK", function (phone_number, element) {
phone_number = phone_number.replace(/\s+/g, "");
return this.optional(element) || phone_number.length > 9 && phone_number.match(/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/);
}, "Please specify a valid uk phone number");
*/
$('#myform').validate({ // initialize the plugin
rules: {
phone_number: {
required: true,
phoneUS: true
}
},
submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
}
});
});