【问题标题】:jQuery selector for hidden elements except用于隐藏元素的 jQuery 选择器,除了
【发布时间】:2015-01-03 17:01:25
【问题描述】:

默认情况下,jQuery Validationignores hidden elements

忽略(默认:":hidden")

类型:选择器

要忽略的元素 验证,只需将它们过滤掉。使用了 jQuery 的 not-方法, 因此 not() 接受的所有内容都可以作为 this 传递 选项。 submit 和 reset 类型的输入总是被忽略,所以也是 禁用元素。

这是来自 jquery.validate.js 的相关代码:

elements: function() {
    var validator = this,
        rulesCache = {};

    // select all valid inputs inside the form (no submit or reset buttons)
    return $( this.currentForm )
    .find( "input, select, textarea" )
    .not( ":submit, :reset, :image, [disabled]" )
    .not( this.settings.ignore )
    .filter( function() {
        // snip
    });
}

我遇到的问题是由于我也在使用 TinyMCE。当 TinyMCE 应用于 textarea 时,它会隐藏 textarea 并在其位置创建一个 iframe。这意味着 jQuery Validation 默认会忽略它。

我可以通过将忽略选项的值更改为null 来强制验证拾取隐藏的文本区域:

$("#myform").validate({
    ignore: null
});

不幸的是,这在我的页面上造成了巨大的性能问题,该页面有数百个隐藏的输入字段。太糟糕了,它实际上使 Chrome 和 IE 崩溃(Firefox 是冠军,但仍然很慢)。

我认为我需要解决这个问题是一个隐藏元素的jQuery选择器除了那些具有特定类名的元素,或者像这样:

$("#myform").validate({
    ignore: ':hidden(:not(textarea.tinymce))'
});

我意识到这是一个无效的选择器。有这样的选择器吗?如果没有,是否有更好的方法告诉 jQuery Validation 忽略所有隐藏元素,但 TinyMCE 隐藏的元素除外?

【问题讨论】:

标签: javascript jquery jquery-validate tinymce


【解决方案1】:

特殊选择器通常在其他选择器之后(notis 以及其他几个选择器除外:

":hidden:not(textarea.tinymce)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2014-03-08
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多