我有验证一些特殊表单的功能,但我无法排除隐藏元素
function specialFormValidation() {
$("#specialForm").validate({
ignore: ':hidden',
errorPlacement: function(sError, oElement) {
$('.tooltip ').remove();
$(oElement).tooltip({
title: sError[0].textContent + $(oElement).is(':hidden'),
animation: false,
placement: 'right',
trigger: 'manual',
container: 'body'
});
$('.error').tooltip('show');
}
});
就像您所看到的,我已经设置了忽略参数,但仍然显示隐藏元素的工具提示,我正在使用 jQuery Validatre v1.10.0 和引导工具提示。如果我输入ignore: ':visible',
,我可以排除可见元素,但它不适用于隐藏元素。
可能忽略元素不适用于加载 DOM 后被脚本隐藏的元素
我尝试像这样修复它(以刷新可见性状态),但也不起作用:
function specialFormValidation() {
var ignored = $(':hidden');
$("#specialForm").validate({
ignore: ignored,
errorPlacement: function(sError, oElement) {
...
最佳答案
ignore
选项用于告诉插件忽略哪些输入元素(用于验证)。我不确定为什么您需要担心工具提示,因为这些不是输入元素,并且它们一开始就不会成为此插件验证的目标。
忽略所有隐藏元素是默认行为。事实上 ':hidden'
与插件已经使用的相同。
换句话说,只要您使用的是 1.9+ 版本的插件,就根本不需要指定 ignore: ':hidden'
。 只需完全忽略ignore
选项,插件就会忽略任何隐藏的内容。
引用OP:
"Probably the ignore element not working on elements which was hidden by script after DOM was loaded"
这不是它的工作原理。如果您动态切换元素的可见性,则插件只会在其隐藏时忽略它。
"I try to fix it like that (to refresh visibility status) but is also not working:"
您不能多次调用.validate()
(无论是否有新选项)。 .validate()
方法仅在页面加载时调用一次以初始化插件。任何后续调用都将始终被忽略。
关于javascript - jQuery 验证忽略 : ":hidden" not always working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22632692/