从 jQuery 验证中获取所有声明规则的方法?

Method to get all declared rules from jQuery Validate?

如何通过 jQuery 验证必填字段在 JS 中循环?特别是我想给他们添加 .required css class。

编辑:

这是一个示例代码:

$("#myForm").validate({
    rules: {
        'firstName': "required",
        'lastName': "required",
         #{get 'jsValidation' /} // some rules come from outside
    }
});

我只需要遍历jQuery.validate中标记为"required"的表单域并添加一个css class(例如.my_required)给他们。

重要说明! 并非所有 jQuery.validate 必填字段都有 .required css class.

// add class to anything with required attr
$('[required="required"]').addClass('required');

虽然我同意评论中的家伙,这似乎是多余的。

作为 jQuery 验证插件的一部分,没有任何方法可以将 return 声明、定义或分配的规则列表返回给您。但是,.validate() 方法中包含的对象文字包含字段列表及其分配的规则。

console.log($("#myForm").validate().settings.rules);

HTML 中字段的 class 和 HTML5 属性也可以包含由 jQuery 验证插件选取和使用的规则。

(插件开发者可能没有意识到创建一个方法只是为了输出你通常会配置的东西的意义,因此首先知道。)

"I just need to loop through the form fields that are marked "required" in jQuery.validate and add a css class"

如果某些字段根据 .validate() 方法具有 required 规则,而其他字段根据 .required class 具有 required 规则, returning/selecting all 字段 "required" 没有技术。所以如果你不能简单地使用一个聪明的 jQuery 选择器和 .addClass() 方法,就没有解决方案。

(实际上,最好的解决方案是控制 HTML,以便在整个项目中一致地声明 required 规则...通过 .validate() 方法或 HTML class 属性,而不是两者的混合。)

规则对象位于验证器 settings 之后,如下所示:

var myValidator = $('form').validate({rules: {'name': { 'required' : true } } });

console.log(myValidator.settings.rules); // outputs current rules
var settings = $.data($("#myForm")[0], "validator").settings
console.log(settings.rules)

查找属性'required'