jQuery验证使用类而不是名称值

Mat*_*att 56 html javascript css jquery jquery-validate

我想使用jquery validate插件验证表单,但是我无法在html中使用'name'值 - 因为这是服务器应用程序也使用的字段.具体来说,我需要限制从组中检查的复选框的数量.(最多3个.)我看过的所有例子都使用每个元素的name属性.我想要做的是改用类,然后为此声明一个规则.

HTML

这有效:

<input class="checkBox" type="checkbox" id="i0000zxthy" name="salutation"  value="1" />
Run Code Online (Sandbox Code Playgroud)

这不起作用,但是我的目标是:

<input class="checkBox" type="checkbox" id="i0000zxthy" name="i0000zxthy"  value="1" />
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

var validator = $(".formToValidate").validate({    
    rules:{     
    "salutation":{  
             required:true,  
        },  
        "checkBox":{  
             required:true,  
          minlength:3  }  
   }   
});
Run Code Online (Sandbox Code Playgroud)

是否可以这样做 - 有没有一种方法可以在规则选项中定位类而不是名称?或者我是否必须添加自定义方法?

干杯,马特

Nic*_*ver 81

您可以使用基于该选择器的规则添加规则.rules("add", options),只需从验证选项中删除您希望基于类的任何规则,并在调用$(".formToValidate").validate({... });之后执行以下操作:

$(".checkBox").rules("add", { 
  required:true,  
  minlength:3
});
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了这个,但它只为第一个复选框添加了类checkBox的规则.是否需要类似.each()枚举器的东西? (10认同)
  • 这有效:http://stackoverflow.com/questions/5748346/jquery-validate-plugin-cant-validate-classes (2认同)
  • @littlegreen,.each(function(){$(this).rules(“ add”,someOption);})可以工作 (2认同)

Ric*_*doS 33

另一种方法是使用addClassRules.它特定于类,而使用选择器和.rules的选项更通用.

在打电话之前

$(form).validate()
Run Code Online (Sandbox Code Playgroud)

使用这样:

jQuery.validator.addClassRules('myClassName', {
        required: true /*,
        other rules */
    });
Run Code Online (Sandbox Code Playgroud)

参考:http://docs.jquery.com/Plugins/Validation/Validator/addClassRules#namerules

对于像这样的情况,我更喜欢这种语法.

  • @saleem我真的不确定。我最近没用过,答案是8年前的。但检查他们的文档,它仍然存在:https://jqueryvalidation.org/jQuery.validator.addClassRules/ (2认同)

Nim*_*mal 11

我知道这是一个老问题.但是我最近也需要相同的一个,我从stackoverflow得到了这个问题+来自这个博客的另一个答案.博客中的答案更直接,因为它专门针对这种验证.这是怎么做的.

$.validator.addClassRules("price", {
     required: true,
     minlength: 2
});
Run Code Online (Sandbox Code Playgroud)

此方法不要求您在此调用之上使用验证方法.

希望这也将有助于未来的人.来源于.


小智 6

这是使用jQuery的解决方案:

    $().ready(function () {
        $(".formToValidate").validate();
        $(".checkBox").each(function (item) {
            $(this).rules("add", {
                required: true,
                minlength:3
            });
        });
    });
Run Code Online (Sandbox Code Playgroud)