its*_*e69 3 jquery jquery-validate
我正在使用jQueryValidation插件.问题:我想在一个输入字段中使用多个模式规则.例如:
$("form").validate({
rules: {
"email": {
required: true,
email: true
},
"password": {
required: true,
pattern: /^[A-Za-z0-9\w]{4,20}/,
pattern: /^[\d\w\xC4\xD6\xDC\xE4\xF6\xFC\xDF]*$/
}
}
});
Run Code Online (Sandbox Code Playgroud)
会发生什么:插件只测试第二个模式规则.例如,输入类似"tst"的东西(因为这符合秒模式),虽然它违反了第一个模式规则.
据我了解此插件中规则的逻辑,所有规则都必须返回TRUE才能验证表单.
您不能key:value两次使用同一对,因为第二个实例将覆盖第一个实例.
你有几个选择.
将两个正则表达式组合成一个.将使用一条错误消息声明一种方法.因此,您将使用该方法创建自己的自定义规则,而不是使用文件中的pattern规则/ 方法.additional-methods.js.addMethod()
而不是组合正则表达式模式,使用pattern规则一次并使用创建新的第二个规则.addMethod().
请参阅:http: //jqueryvalidation.org/jQuery.validator.addMethod/
我将创建一个专用于每个正则表达式模式的自定义方法,并为其提供一个语义相关的名称,如"电子邮件","电话","字母数字","IP"等.(这也是所有正则表达式的相同方式评估规则由此插件内部处理.)
jQuery.validator.addMethod("foo", function(value, element) {
return this.optional(element) || /^[A-Za-z0-9\w]{4,20}/.test(value);
}, "Your entered data is not foo");
jQuery.validator.addMethod("bar", function(value, element) {
return this.optional(element) || /^[\d\w\xC4\xD6\xDC\xE4\xF6\xFC\xDF]*$/.test(value);
}, "Your entered data is not bar");
Run Code Online (Sandbox Code Playgroud)
宣布像这样......
"password": {
required: true,
foo: true,
bar: true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14084 次 |
| 最近记录: |