使用倍数 addMethod jquery

using multiples addMethod jquery

我想使用带有 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 并且它完全按照我的意愿工作,但即使我调用method'surname'在字段规则里,好像详细说明了method'name'反正!

在此先感谢您的帮助,我真的不明白我在这里遗漏了什么..

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

问题出在您的方法名称上。 prop name inside rules 已经是 $.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