您好我正在使用 jquery 验证来验证我的 aspx 页面。deliveryToDiv
通过设置隐藏
document.getElementById("deliveryToDiv").style.display = "none";
此 div 具有其他控件,这些控件将根据此 div 的可见性进行验证。但是设置ignore:"hidden"
似乎不适用于此 div。即使此 div 不可见,也会引发错误消息。如何检测此 div 是否可见并执行验证?
解决方法是什么?请告知。提前谢谢你
您好我正在使用 jquery 验证来验证我的 aspx 页面。deliveryToDiv
通过设置隐藏
document.getElementById("deliveryToDiv").style.display = "none";
此 div 具有其他控件,这些控件将根据此 div 的可见性进行验证。但是设置ignore:"hidden"
似乎不适用于此 div。即使此 div 不可见,也会引发错误消息。如何检测此 div 是否可见并执行验证?
解决方法是什么?请告知。提前谢谢你
该ignore
选项采用选择器,:hidden选择器以冒号字符开头。
因此,你应该写:
ignore: ":hidden"
代替:
ignore: "hidden"
后者匹配<hidden>
元素而不是不可见的元素。
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
}
:hidden
是为<input type="hidden">
。因此,也许如果您禁用 div 中的所有字段,它会有所帮助。验证应该跳过禁用的字段。
可能的原因可能是ignore: ':hidden'
在jquery.validate.unobtrusive.js file
. 只需删除该行。
在 1.9.0 版本之后,这是默认行为。如果文件中不存在该行(我不确定),您可以通过添加手动修复该行
$.validator.setDefaults({ ignore: [] });
正如你在这里看到的
另一个更改应该使带有隐藏元素的表单的设置更容易,这些现在默认被忽略(选项“ignore”现在默认为“:hidden”)。从理论上讲,这可能会破坏现有设置。在不太可能的情况下,您可以通过将忽略选项设置为“[]”(不带引号的方括号)来修复它。