【发布时间】: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