使用倍数addMethod jQuery

时间:2018-07-27 17:30:42

标签: javascript jquery forms jquery-validate

我想使用带有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        
      }
    }
  });

问题是,在姓氏中,如果要合并姓氏,我希望添加一个“-”,我尝试了regEx,它的功能完全符合我的意愿,但是即使我将方法称为“字段规则中的“姓””,似乎还是要详细说明“名字”方法!

在此先感谢您的帮助,我真的不明白我在这里缺少什么。

https://jsfiddle.net/2zumkcyg/11/

1 个答案:

答案 0 :(得分: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