忽略:“:hidden”对于display:none的控件不起作用

时间:2013-09-13 09:50:38

标签: jquery jquery-validate

您好我正在使用jquery验证来验证我的aspx页面。设置

隐藏deliveryToDiv
document.getElementById("deliveryToDiv").style.display = "none";

此div具有其他控件,将根据此div的可见性进行验证。 但设置ignore:"hidden"似乎不适用于此div。即使此div不可见,也会抛出错误消息。如何检测此div是否可见并执行验证?

解决方法是什么?请指教。提前谢谢你

4 个答案:

答案 0 :(得分:1)

ignore选项采用选择器,:hidden选择器以冒号字符开头。

因此,你应该写:

ignore: ":hidden"

而不是:

ignore: "hidden"

后者匹配<hidden>元素而不是不可见的元素。

答案 1 :(得分:0)

How can I detect if this div is visible and perform validation?

要做到这一点你可以这样说:

if($('#deliveryToDiv').is(':visible')){
   // do the validation here
}else{
   // do the other stuff if not visible
}

答案 2 :(得分:0)

:hidden适用于<input type="hidden">。因此,如果您禁用div中的所有字段,它可能会有所帮助。验证应跳过禁用的字段。

答案 3 :(得分:-1)

可能的原因可能是ignore: ':hidden'中有jquery.validate.unobtrusive.js file行。只需删除该行。

在1.9.0版本之后,它是默认行为。如果文件中不存在该行(我不确定),您可以通过添加

手动修复该行

$.validator.setDefaults({ ignore: [] });

正如你在这里看到的那样

另一个更改应该使隐藏元素的表单设置更容易,默认情况下现在会忽略它们(选项“ignore”现在默认为“:hidden”)。从理论上讲,这可能会打破现有的设置。在实际情况不太可能的情况下,您可以通过将ignore-option设置为“[]”(方括号而不带引号)来修复它。