在新版本的jQuery验证插件1.9中默认忽略隐藏字段的验证。我使用CKEditor文本区域输入字段,它隐藏字段,并将其替换为iframe。字段在那里,但是对隐藏字段禁用验证。在验证插件1.8.1版中,一切都能正常工作。

所以我的问题是如何启用验证隐藏字段与v1.9验证插件。

此设置无效:

$.validator.setDefaults({ ignore: '' });

当前回答

这对我很有用。

jQuery("#form_name").validate().settings.ignore = "";

其他回答

只是在特定页面中为特定表单添加了ignore:[],这个解决方案对我来说很有效。

$("#form_name").validate({
        ignore: [],
        onkeyup: false,
        rules: {            
        },      
        highlight:false,
    });

插件的作者说你应该使用“不带引号的方括号”,[]

http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/

版本:验证插件1.9.0: "...另一个更改应该使表单的设置具有隐藏元素 更简单的是,现在默认情况下忽略这些(选项“ignore”有 ":hidden "现在为默认值)。理论上,这可能会破坏现有的 设置。在不太可能发生的情况下,你可以通过 将忽略选项设置为“[]”(方括号中没有 引号)。”

为所有表单更改此设置:

$.validator.setDefaults({ 
    ignore: [],
    // any other default options and/or rules
});

(并不要求在文档中包含. setdefaults()。准备好函数)

一种特定形式的OR:

$(document).ready(function() {

    $('#myform').validate({
        ignore: [],
        // any other options and/or rules
    });

});

编辑:

关于如何在某些隐藏字段上启用验证,但仍然忽略其他字段,请参阅此回答。


编辑2:

在留下“这不起作用”的评论之前,请记住,OP只是在询问jQuery验证插件,他的问题与如何使用ASP无关。NET、MVC或任何其他微软框架都可以改变这个插件的正常预期行为。如果你使用的是微软框架,jQuery Validate插件的默认功能会被微软的unobtrusie -validation插件覆盖。

如果你还在纠结于不显眼的验证插件,那么请参考这个答案:https://stackoverflow.com/a/11053251/594235

验证在表单提交上为我工作,但它没有对所选选择列表的输入进行响应性事件驱动验证。

为了解决这个问题,我添加了以下内容来手动触发库添加的jquery验证事件:

$(".chosen-select").each(function() {
  $(this).chosen().on("change", function() {
    $(this).parents(".form-group").find("select.form-control").trigger("focusout.validate");
  });
});

jquery。Validate现在将.valid类添加到基础选择列表中。

注意:这要求表单输入使用一致的html模式。在我的例子中,每个输入字段都包装在div.form-group中,每个输入都有.form-control。

一定要把

 $.validator.setDefaults({ ignore: '' });

不在$(document).ready中

只需在jquery验证文件中找到文本ignore: ":hidden"并注释它。 注释后,它将永远不会丢失任何隐藏的元素来验证…

谢谢