jQuery在单个字段上禁用规则验证

sha*_*ake 51 validation jquery-validate

我正在使用MVC创建在运行时生成的表单.为了验证,我正在尝试使用非常方便的jQuery验证库.我有标签的cdata属性中每个字段的验证表达式

<input type="text" name="xyz" id="xyz" class="defaultTextBox"
  cdata="{validate:{required:true, decimal:true, messages:
          {required:'Please enter an decimal value', 
           decimal:'Please enter a valid decimal'}}}">
Run Code Online (Sandbox Code Playgroud)

这很好用.现在我还有一个要求是根据页面上的逻辑显示和隐藏某些字段,我需要在隐藏字段上禁用验证,这样它们就不会干扰表单提交.只需将所需的:true转换为false并返回true即可.只有我不知道怎么做.

任何人都有这方面的经验吗?

Gab*_*abe 82

只需添加ignore规则并定义选择器即可.在此示例中,验证将忽略具有的所有元素class="ignore"

$("#myform").validate({
   ignore: ".ignore"
})
Run Code Online (Sandbox Code Playgroud)

  • 警告!`defaults`配置中`jquery.validate.js`的默认值是`ignore:":hidden"`所以我建议把`ignore:".ignore,:hidden"`或者隐藏的字段没有用于突然验证会给你错误 (45认同)

Sim*_*ver 37

如果您使用的是ASP.NET MVC Unobtrusive JQuery验证,则需要以这种方式设置设置.这是因为Microsoft实际调用jQuery验证的方式.这在ready方法内部应该是安全的.

编辑:请在复制粘贴之前查看Cory的评论.这是我的原始代码

    $("form").data("validator").settings.ignore = ".data-val-ignore, :hidden, :disabled";
Run Code Online (Sandbox Code Playgroud)

然后我只是将.data-val-ignore课程应用于不验证的东西.

请注意,您可能希望添加:hidden实际上定义的默认忽略行为jquery.validate.js.我也想加:disabled.

$.extend($.validator, {
defaults: {
    messages: {},
    groups: {},
    rules: {},
    errorClass: "error",
    validClass: "valid",
    errorElement: "label",
    focusInvalid: true,
    errorContainer: $([]),
    errorLabelContainer: $([]),
    onsubmit: true,
    ignore: ":hidden",              // default for ignore in jquery.validate.js
    ignoreTitle: false,
    onfocusin: function( element, event ) {
        this.lastActive = element;
Run Code Online (Sandbox Code Playgroud)

最后你可能想要设计它 - 在调试过程中特别有用.

.data-val-ignore
{
    background: #eee;
}
Run Code Online (Sandbox Code Playgroud)

  • 访问设置的方式似乎已经改变(至少在我的项目中),现在是:$("form").validate().settings.ignore - 以防这是其他任何人的解决方案! (9认同)

Nor*_*n H 7

根据Gabe的回答,您还可以将忽略值设置为默认值,因此您不必在每个表单上设置它.

$.validator.setDefaults({ignore: ".ignore"});
Run Code Online (Sandbox Code Playgroud)

另请注意,ignore字段是jQuery not()函数中使用的jQuery选择器,因此可以使用任何有效的选择器,而不仅仅是简单的类.

有关可以设置的其他默认值的详细信息,另请参阅http://docs.jquery.com/Plugins/Validation/validate#toptions.