jQuery 验证插件 - 有多个"conflicting"规则



我的验证代码是这样的:

$("#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
}
});
});

相关内容

  • 没有找到相关文章

最新更新