【问题标题】:jQuery.validator cannot assign default ignore selector to jQuery.validator.defaults.ignorejQuery.validator 无法将默认忽略选择器分配给 jQuery.validator.defaults.ignore
【发布时间】:2010-03-10 04:35:14
【问题描述】:

我从here 知道我可以像这样在 jQuery.validate 方法中传递一个忽略选项...

$('form').validate({
    ignore: ":hidden"
});

...效果很好,但我想将验证器设置为默认忽略“:hidden”表单字段...我尝试了以下方法:

jQuery.validator.defaults.ignore.push(":hidden");

...但它不起作用。

为了隐藏表单字段,我将它们包装在一个 div 中并隐藏了 div;默认情况下应用了“显示:无”。

有人有什么想法吗?

编辑: 在看了一下 firebug 之后,我一直想知道,jQuery 中的“not()”方法是否不意味着能够获取一个数组......这就是 jQuery.validator.defaults.ignore 属性是什么, 或者是别的什么?

编辑 2 我注意到如果我这样做:

jQuery.validator.defaults.ignore = ":hidden";

它可以工作......再次,我认为它可能是一个数组......

结果 似乎使用上面编辑 2 中的代码并非不合理,因为当您在 validate() 方法中分配 'ignore: ":hidden"' 时,您实际上是在做同样的事情......让我感动的是默认是一个数组。

【问题讨论】:

    标签: jquery plugins jquery-plugins validation


    【解决方案1】:

    .not() 的重载之一是 .not([elements])see here for details[] 的初始声明传递了一组空元素,没有任何内容可供 jQuery 删除。当您将类型更改为字符串时,您将调用 .not() 的不同重载

    【讨论】:

    • 谢谢,我没有意识到这一点。它解释了为什么它不起作用......这是因为我没有传递元素(我试图传递一个jQuery选择器数组。我已经给了你一个+1,你也可以得到答案'已经解释了为什么它不能以第一种方式工作......
    【解决方案2】:

    虽然 defaults.ignore 属性是一个数组,但它被传递给 jQuery not() 方法,该方法接受一个选择器……所以通过如下分配一个字符串,验证器会忽略视图之外的元素。这有效:

    jQuery.validator.defaults.ignore = ":hidden"; 
    

    我唯一真正的问题是为什么它首先是一个数组。它是这样定义的:

    ignore: []
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 2016-03-25
      • 2011-11-18
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多