我的验证代码是这样的:
$("#form").validate({
rules: {
...
phone_number: {
phoneUS: true,
phonesUK: true,
phoneNL: true
}
...
}
});
如您所见,我正在使用多个冲突的规则(所有电话号码(。我的目的是涵盖尽可能多的电话号码语法的验证。
使用上面的代码,我使用的是美国、英国和荷兰电话号码验证,因为这些是默认情况下与additional-methods.js
一起打包
的电话号码。但是,它不起作用。不仅仅是一个电话号码不起作用;所有三种类型都不起作用。我尝试输入:
- 7815558923(美国(
- 781 555 8923 (美国(
- 781-555-8923(美国(
- 01632 960881(英国(
- 06-14147112 (荷兰(
所有这些都是我在网上找到的假的、生成的数字。无论如何,它们都没有通过验证,我认为这是因为我包含了所有三个验证规则。
那么,问题是,我如何拥有多个验证规则来覆盖尽可能多的区域,同时避免导致系统崩溃的冲突?
您应该尝试像这样定义电话号码规则:
下面是一个简单的例子: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(/^(+44s?7d{3}|(?07d{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
}
});
});