具有多个规则的jQuery表单验证插件
我正在使用jQueryValidation插件问题:我想在一个输入字段中使用多个模式规则。例如:具有多个规则的jQuery表单验证插件,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jQueryValidation插件问题:我想在一个输入字段中使用多个模式规则。例如: $("form").validate({ rules: { "email": { required: true, email: true }, "password": { required: true, pattern: /^[A-Za-z0-9\w]{4,20}/, pattern: /^[\
$("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]*$/
}
}
});
发生了什么:插件只测试第二个模式规则。例如,输入类似“tst”的内容可以工作(因为这符合秒模式),尽管它违反了第一个模式规则
据我所知,该插件中的规则逻辑,所有规则都必须返回TRUE才能验证表单。您不能两次使用相同的
key:value
对,因为第二个实例将覆盖第一个实例
你有两个选择
- 将两个正则表达式组合为一个。将用一条错误消息声明一个方法。因此,您将使用
方法创建您自己的自定义规则,而不是使用.addMethod()
文件中的附加方法.js
规则/方法模式
- 不要组合正则表达式模式,而是使用
规则一次,然后使用模式
创建第二个新规则.addMethod()
我会为每个正则表达式模式创建一个自定义方法,并给它一个语义相关的名称,比如“email”、“phone”、“字母数字”、“IP”等(这也是该插件内部处理所有正则表达式计算规则的相同方式) 像这样宣布
"password": {
required: true,
foo: true,
bar: true
}
javascript对象不能有两个相同的键,第二个实例将覆盖第一个。您需要为第二个模式添加自己的方法,或者将这两种方法合并到一个正则表达式中
"password": {
required: true,
foo: true,
bar: true
}