javascript - jQuery 验证忽略 : ":hidden" not always working

标签 javascript jquery jquery-validate

我有验证一些特殊表单的功能,但我无法排除隐藏元素

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/

相关文章:

javascript - 为什么我的整个网页在 Firefox 中按按键移动?

javascript - 跨浏览器右键单击插件与jquery?

javascript - 使用jQuery with/Electron/NodeJS匹配一组数字以替换为文本

javascript - 存储元素与其 id,哪个最有效

javascript - 重置之前搜索的隐藏项目

jquery - 在ajax中设置全局变量获得成功

jQuery。查找第一个包含无效字段的 div 的函数

jquery - 如何使用 jQuery 进行跨域验证?

jQuery.validate 插件和 ajax 表单提交

javascript - 如何根据大写字母拆分字符串?