2

您好我正在使用 jquery 验证来验证我的 aspx 页面。deliveryToDiv通过设置隐藏

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

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

解决方法是什么?请告知。提前谢谢你

4

4 回答 4

1

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

因此,你应该写:

ignore: ":hidden"

代替:

ignore: "hidden"

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

于 2013-09-13T10:09:14.203 回答
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
}
于 2013-09-13T09:58:09.487 回答
0

:hidden是为<input type="hidden">。因此,也许如果您禁用 div 中的所有字段,它会有所帮助。验证应该跳过禁用的字段。

于 2013-09-13T10:00:10.507 回答
-1

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

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

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

正如你在这里看到的

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

于 2013-09-13T10:06:10.967 回答