默认情况下,jQuery Validation ignores hidden elements:
忽略(默认:“:隐藏”)
类型:选择器
要忽略的元素 验证,只是过滤掉它们。使用jQuery的not-method, 因此,not()接受的所有内容都可以这样传递 选项。始终忽略提交和重置类型的输入,也是如此 残疾人元素。
以下是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默认忽略它。
我可以强制验证通过将ignore选项的值更改为null
来拾取隐藏的textareas:
$("#myform").validate({
ignore: null
});
不幸的是,这会在我的页面上产生巨大的性能问题,其中包含数百个隐藏的输入字段。实际上它崩溃了Chrome和IE(Firefox是冠军,但仍然很慢)。
我认为我需要解决这个问题的是隐藏元素的jQuery选择器,除了具有某个类名的那些,或类似的东西:
$("#myform").validate({
ignore: ':hidden(:not(textarea.tinymce))'
});
我意识到这是一个无效的选择器。有这样的选择器吗?如果没有,有没有更好的方法,我没有看到jQuery Validation忽略除TinyMCE隐藏的所有隐藏元素?
答案 0 :(得分:3)
特殊选择器通常会追踪其他选择器(not
和is
以及其他选择器除外:
":hidden:not(textarea.tinymce)"