在新版本的jQuery验证插件1.9中,默认情况下忽略隐藏字段的验证 我将CKEditor用于textarea输入字段,它隐藏了该字段并将其替换为iframe。 该字段在那里,但是对隐藏字段禁用验证。 使用验证插件1.8.1版时,所有功能均按预期工作。

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

此设置无效:

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

===============>>#1 票数:316 已采纳

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

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

发布:Validation Plugin 1.9.0: “ ...另一项更改应使带有隐藏元素的表单的设置更加容易,默认情况下这些元素现在将被忽略(选项“ ignore”现在默认为“:hidden”)。可能会破坏现有的设置。在不太可能的情况下,您可以通过将ignore-option设置为“ []”(不带引号的方括号)来修复它。

要为所有表格更改此设置:

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

(不需要.setDefaults()document.ready函数中)

或针对一种特定形式:

$(document).ready(function() {

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

});

编辑

有关如何在某些隐藏字段上启用验证但仍忽略其他字段的信息,请参见此答案


编辑2

在留下“这不起作用”的评论之前,请记住,OP只是在询问jQuery Validate插件,而他的问题与ASP.NET,MVC或任何其他Microsoft框架如何改变此插件的正常状态无关。预期的行为。 如果您使用的是Microsoft框架,则jQuery Validate插件的默认功能会被Microsoft的unobtrusive-validation插件覆盖。

如果您正在努力使用unobtrusive-validation插件,请改用以下答案: https : //stackoverflow.com/a/11053251/594235

===============>>#2 票数:69

在ASP.NET MVC3站点中,这对我有用,在该站点中,我离开了框架来设置非侵入式验证等,以防对任何人有用:

$("form").data("validator").settings.ignore = "";

===============>>#3 票数:64

确保放

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

内部没有 $(document).ready

===============>>#4 票数:28

因此,我将深入探讨为什么这种方法不起作用,因为我是那种无法在不知道哈哈的情况下无法入睡的人。 我正在使用jQuery validate 1.10和Microsoft jQuery Unobtrusive Validation 2.0.20710.0(发布于2013年1月29日)。

我首先在jQuery Validate中搜索setDefaults方法,并在未缩小文件的第261行找到了它。 此功能真正要做的就是将您的json设置合并到现有的$.validator.defaults中,该$.validator.defaults初始化时将ignore属性设置为“:hidden”,并结合其他在jQuery Validate中定义的默认值。 因此,在这一点上,我们已经忽略了忽略。 现在,让我们看一下该默认属性的引用位置。

当我跟踪代码以查看在哪里引用了$.validator.defaults 我注意到,构造函数仅将其用于表单验证器,jQuery中的第170行验证未缩小的文件。

// constructor for validator
$.validator = function( options, form ) {
    this.settings = $.extend( true, {}, $.validator.defaults, options );
    this.currentForm = form;
    this.init();
};

此时,验证器将合并所有已设置的默认设置,并将其附加到表单验证器。 当您查看正在执行验证,突出显示,取消突出显示等的代码时,它们都使用validator.settings对象来提取ignore属性。 因此,我们需要确定是否要使用setDefaults方法设置忽略,然后必须在调用$(“ form”)。validate()之前进行忽略。

如果您使用的是Asp.net MVC和不引人注目的插件,那么在查看document.ready中调用validate的javascript之后,您将意识到。 我还在document.ready块中调用了setDefaults,它将在脚本,jquery验证且不引人注意之后执行,因为我已经在html中定义了这些脚本的脚本之前定义了这些脚本。 因此,我的电话显然对验证期间跳过隐藏元素的默认功能没有影响。 这里有两个选择。

选项1-正如胡安·梅拉多(Juan Mellado)所指出的那样,您可以在document.ready之外进行调用,该调用将在脚本加载后立即执行。 我不确定这样做的时机,因为浏览器现在能够执行并行脚本加载。 如果我只是过于谨慎,请纠正我。 另外,可能有解决方法,但出于我的需要,我没有走这条路。

选项2a-我眼中的安全赌注是只替换$.validator.setDefaults({ ignore: '' }); 在document.ready事件内部,带有$("form").data("validator").settings.ignore = ""; 当对给定表单的元素进行每次验证时,这将修改jQuery validate实际使用的ignore属性。

选项2b-再看一些代码后,您还可以使用$("form").validate().settings.ignore = ""; 作为设置忽略属性的一种方式。 原因是当查看validate函数时,它检查以查看是否已经通过$.data()函数为form元素存储了一个验证器对象。 如果找到与form元素一起存储的验证器对象,则仅返回该验证器对象,而不创建另一个对象。

===============>>#5 票数:12

这在ASP.NET站点中对我有用。 要对某些隐藏字段启用验证,请使用此代码

$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";

要启用对表单所有元素的验证,请使用此$("form").data("validator").settings.ignore = "";

请注意,在$(document).ready(function() { })中使用它们

===============>>#6 票数:8

只需在特定表单的特定页面中添加ignore: [] ,此解决方案对我有用。

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

===============>>#7 票数:0

这对我有用。

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

===============>>#8 票数:-13

只要在您的jquery验证文件中找到忽略的文本:“:hidden”并将其注释即可。 评论后,它将永远不会丢失任何要验证的隐藏元素...

谢谢

  ask by Shaman translate from so

未解决问题?本站智能推荐:

3回复

jQuery Validate-验证只读字段

我的表单上有3个字段:A,B和C。C是一个只读字段,其值是从A和B的总和得出的。如何使jQuery Validate在字段C上运行以确保其值更大提交表单时大于0? 现在,如果我在字段C上设置验证,那么它将不起作用。 如果我从该字段中删除了只读属性,则会运行验证,但我不希望用户更改该字段中
2回复

jQuery validate-验证页面加载中的字段

我在普通的html表单上有一个输入字段,从页面加载开始,我希望将其标记为无效(并显示错误消息)。 这可能与jquery validate插件有关吗? 失败了,当插件尝试验证特定的输入字段时,如何隐藏元素?
2回复

jQuery validate-如果隐藏字段具有值,则有效

我需要根据隐藏字段的值来验证字段。 我尝试了以下自定义规则: featureID是一个隐藏的输入,我需要检查其值。 这似乎不起作用。 有任何想法吗?
1回复

jQuery Validate不打扰-启用隐藏字段的验证

我正在使用asp.net mvc 5,关于jquery验证不打扰,jquery validate是1.13版本。 我已经搜索了很多答案,尽管这个问题已经解决了,但是我想知道另一种方法。 如果将代码放在$(document).ready中。 所有代码都没用 如何仅对一种表单启用隐
1回复

jQuery validate-如何使用两个XOR规则验证一个字段

我有一个可以包含电子邮件或手机的字段(在我的情况下,手机为8位数字)。 我已经尝试了两种方法(这两个示例都不起作用,因为“元素”没有validate方法): 第一种方法:创建自定义方法并在此处进行两个验证,但是然后我必须创建自己的电子邮件验证和移动验证-我找不到一种在新方法中重用jQue
1回复

jQuery validate-添加规则会触发验证

我有下面的代码,可以对表单中的字段执行一些条件验证。 基本思想是,如果在一个字段中输入了某些内容,则应将此“组”中的所有字段都要求为必填项。 这很好用,我在其他页面上成功使用了几乎相同的代码。 这里的一个小问题是,当我在第一个文本框中输入一个值并从中跳出标签时,验证就会触发并显示错误
1回复

jQuery Validate-运行时自定义验证

在我的表单中,我有两个文本框txtName和txtAge。 我使用jquery.validate.js使其成为必需的字段验证器,并且工作正常。 现在我的要求有时是基于某些业务逻辑的,我需要以编程方式使这两个字段成为非强制性的。 但是,如果用户填写txtName,他也需要填写txtAge或V
1回复

jQuery Validate-如何忽略内联模式验证

我已经设置好了,其中需要实现三个单独的目标: 客户端验证(使用jQuery Validate插件完成) 整齐的数字格式(这是使用jQuery autoNumeric插件完成的) iPad / iPhone键盘在仅数字字段上弹出(通过在输入元素上使用pattern =“
1回复

jQuery validate-可以更改提交的字段值吗?

我有一个自定义方法 在这里,我正在修剪空白,并用一个替换所有重复的空白。 然后,我将进行验证以确保只有字母和空格。 是否可以这样做,以便将修整后的value提交给表单而不是用户输入的表单?
1回复

jQuery Validate-验证但有目的地允许提交表单

是否可以使用jQuery Validation插件运行验证,但实际上允许提交表单? 原因是我想要一个“保存进度”按钮,该按钮可以让您实质上提交错误的数据。 表单最终将包含多个步骤,在最后一步,我将确定表单的有效性并启用“提交”按钮(如果所有部分均有效)。 因此,将向用户显示类似“您的进