使用多个addMethod jquery
Posted
技术标签:
【中文标题】使用多个addMethod jquery【英文标题】:using multiples addMethod jquery 【发布时间】:2019-01-04 20:52:37 【问题描述】:我想使用带有 jQuery 验证器的 addMethod 函数自定义表单的验证,但是当我尝试添加多个方法时,验证器似乎只查看第一个。
代码如下:
jQuery.validator.addMethod("name", function(value, element)
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]2,30$/.test(value);
, "please enter a valid name");
jQuery.validator.addMethod("surname", function(value, element)
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]1,30\-?[A-Za-zÀ-ÖØ-öø-ÿ]1,30$/.test(value);
, "please enter a valid surname");
$("#contactform").validate(
rules:
firstname:
required: true,
name: true,
minlength: 2,
maxlength: 30
,
lastname:
required: true,
surname: true,
minlength: 2,
maxlength: 30
);
问题是在姓氏上我希望能够添加一个“-”以防组合姓氏,我尝试了正则表达式,它完全按照我想要的方式工作,但即使我调用方法“字段规则中的姓氏,似乎无论如何都详细说明了方法'name'!
提前感谢您的帮助,我真的不明白我在这里缺少什么..
https://jsfiddle.net/2zumkcyg/11/
【问题讨论】:
您应该接受@dysfunc 的答案(您可以更改它)...我意识到我误读了您的问题。但请记住调试技巧;) 【参考方案1】:问题在于您的方法名称。规则内的道具name
已经是$.validator
内的预定义规则,如minLength
。如果您将 name
更改为任何内容,但它会起作用。
JS
$(document).ready(function()
$.validator.addMethod("named", function(value, element)
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]2,30$/.test(value);
, "Please enter a valid name.");
$.validator.addMethod("surname", function(value, element)
return this.optional(element) || /^[A-Za-zÀ-ÖØ-öø-ÿ]1,30\-?[A-Za-zÀ-ÖØ-öø-ÿ]1,30$/.test(value);
, "Please enter a valid surname.");
$("#contactform").validate(
rules:
firstname:
required: true,
named: true,
minlength: 2,
maxlength: 30
,
lastname:
required: true,
surname: true,
minlength: 2,
maxlength: 30
);
);
DEMO
【讨论】:
演示不会产生相同的输出。 @LouysPatriceBessette 当该字段无效时,它会返回正确的错误消息。开发人员并没有试图故意覆盖 name 方法。他们现在必须将name: false
添加到每条新规则中。以上是关于使用多个addMethod jquery的主要内容,如果未能解决你的问题,请参考以下文章
jQuery.validator.addMethod自定义验证
如何在 JQuery 验证插件 addmethod() 中向服务器端发送异步 AJAX 调用