使用多个addMethod jquery

Posted

技术标签:

【中文标题】使用多个addMethod jquery【英文标题】:using multiples addMethod jquery 【发布时间】:2019-01-04 20:52:37 【问题描述】:

我想使用带有 jQ​​uery 验证器的 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 调用

jQuery validator addMethod 动态提示信息

使用 jQuery 验证插件自定义日期格式

jquery正则常用的

validate