如何从jQuery Validate中的所有表单输入中删除“必需”规则?

时间:2010-07-23 11:56:24

标签: jquery jquery-validate

如上所述,如何使用jQuery Validate从表单中删除所有必需的规则?

这就是我现在所拥有的:

var settings = $('form').validate().settings;

//alert(settings.rules.toSource());
for (var i in settings.rules){
    alert(i);
    delete settings.rules.i; 
    // ^ not sure about how to do this properly,
    // and how to just delete the 'required' rule and keep the rest intact
}

jQuery Validate的本机函数返回一个未定义的错误:

$("input, select, textarea").rules('remove','required');

4 个答案:

答案 0 :(得分:21)

如果您不想搞乱验证的内部设置,可以这样使用公共功能:

$('input, select, textarea').each(function() {
    $(this).rules('remove', 'required');
});

请注意,省略第二个参数(必需)将删除所有规则,而不仅仅是“必需”。

答案 1 :(得分:4)

有时可能就是这种情况,我似乎在诉诸于此处之后偶然发现了答案。

for (var i in settings.rules){
   delete settings.rules[i].required;
}

作品。

答案 2 :(得分:0)

当您需要删除必需的输入时,还需要删除输入的attr,请对此进行测试。

$('element').rules('remove', 'required'); $('element').removeAttr('required');

答案 3 :(得分:0)

您可以使用ignore属性为客户端验证全局禁用jquery验证规则(请参见验证器选项https://jqueryvalidation.org/validate/)。这对于测试服务器端验证很有用。

您可以禁用所有规则

$.validator.setDefaults({
  ignore: ":hidden, input, select, textarea"
})

这是一个jquery选择器,所以您也可以这样做

$.validator.setDefaults({
  ignore: ":hidden, input[required], select[required], textarea[required]"
})

对于其他输入,只需根据需要添加。

对于开发环境,您也可以使用类似这样的方法删除html验证(因为它的选择器很慢):

$("*[required]").removeAttr("required");
$("*[maxlength]").removeAttr("maxlength");
$("*[minlength]").removeAttr("minlength");
$("*[pattern]").removeAttr("pattern");