在 jQuery 验证中忽略所有隐藏的 div 但不是一个

Posted

技术标签:

【中文标题】在 jQuery 验证中忽略所有隐藏的 div 但不是一个【英文标题】:Ignore all hidden div but not one in jQuery validation 【发布时间】:2013-12-15 18:10:00 【问题描述】:

我在表单中使用 jQuery 验证 http://jqueryvalidation.org/documentation/

我想将验证添加到我的所有字段,但我想忽略具有 my_item 类的隐藏 div

这是我的 jQuery:

 $("#myform").validate( 
    ignore: ":hidden"
 );

如何从这种忽略情况中排除具有 my_item 类的 div。比如$(":hidden").not(.my_item)

【问题讨论】:

【参考方案1】:

您可以使用 :not() 选择器:

ignore: ":hidden:not(.my_item)"

【讨论】:

谢谢。我也可以这样做吗 :hidden:not(.item1, .item2); 不过恐怕不行。因为现在它根本不验证 my_item。 这个答案还有效吗?即使无效,我使用表单的任何“忽略”设置都会被发送。我试过忽略:[],忽略:“”,忽略:':hidden:not(#id_myimput)。总是相同的结果:我在字段上看到错误通知,但无论如何都提交了表单。删除任何“忽略”设置修复验证 谢谢。这有助于在 materializecss 框架中抓取隐藏的选择进行验证。这是一个问题,因为我还有一些动态切换/隐藏内容(想想国家 -> 州/省选择框)。使用此规则,我至少能够拾取隐藏的选择,然后将它们传递给我自己的自定义“选择检查器”验证方法,该方法将首先查看选择是否在舞台上,然后从那里继续。 @bluantinoo 它确实有效,但您需要将其作为 validate 方法的一个选项,而不是在您的规则对象中。在查看文档之前,我遇到了问题。【参考方案2】:

接受的答案非常好,但是当您需要比 jQuery 选择器提供的更多控制时。 You could pass a function that tests each element.

例如:

ignore: function (index, el) 
   var $el = $(el);

   if ($el.hasClass('always-validate')) 
       return false;
   

   // Default behavior
   return $el.is(':hidden');
,

【讨论】:

这太完美了,谢谢 正是我想要的。 【参考方案3】:

如果你的字段没有类名,你可以根据它的名字忽略它:

ignore: ['name = "field_name"']

【讨论】:

以上是关于在 jQuery 验证中忽略所有隐藏的 div 但不是一个的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏一个div类下的所有div并在JQuery中显示一个相同类的div?

jQuery Validate 无法验证 chosen-select元素

jQuery:动画隐藏字母随机但间隔相等

JQuery 隐藏除我搜索的 div 之外的所有 div [关闭]

使用 jQuery 检查所有 div 是不是被隐藏

JavaScript或者jQuery怎样获取一个隐藏元素的宽高