【问题标题】:How to filter inputs fields in a particular div如何过滤特定 div 中的输入字段
【发布时间】:2019-07-11 00:02:20
【问题描述】:

这会过滤 HTML 中的所有输入字段:

var required = $('input, textarea, select').filter('[required]:visible')

我想过滤特定的 div:

<div id="a">
  <input ... required>
</div>
<div id="b">
  <input ... required>
  <input ... required>
</div>

【问题讨论】:

  • $('#a').find('input,textarea,select').filter(....)
  • find 在某些 IE 上不起作用
  • “find 在某些 IE 上不起作用”请澄清该声明,因为如果没有更多上下文(例如浏览器版本和您使用的 jQuery 等)似乎很难证明这一点。
  • find doesn't work on some IE 这根本不是真的——除非你回到 IE5 或 6,在这种情况下你会遇到更大的问题。
  • 请更新您的问题以提供正确的 HTML 以及您需要提供可重现示例的任何其他代码。就目前而言,这只是此处接受的答案的副本:stackoverflow.com/questions/18659726/… 并声明它不起作用。我们需要您的实际标记和任何其他代码来证明其他情况。

标签: jquery filter


【解决方案1】:

您可以简单地使用以下选择器,该选择器使用:input(也将选择&lt;button&gt;s,如果不需要,您可以切换回input,textarea,selectfilter):

$('#a :input:visible[required]');

#a 替换为您要过滤的任何 div。

如果元素需要在 div 的正下方,可以使用#a &gt; :input:visible[required] 代替。

演示

var $required = $('#a :input:visible[required]');

// Just to showcase what this selector matches
$required.css('background-color', 'red');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="a">
  <p>A1: <input type="text" required></p>
  <p>A2: <textarea required></textarea></p>
  <p>A3: <select required><option>option1</option></select></p>
  <p>A4 (hidden, won't be matched): <input type="text" style="display:none" required></p>
</div>
<div id="b">
  <p>B1: <input type="text" required></p>
  <p>B2: <input type="text" required></p>
</div>

【讨论】:

  • 按照您的说明切换回来仍会在过滤器之前选择原始上下文中的按钮。
  • @MarkSchultheiss 不完全确定你的意思,但是是的,你必须继续使用.filter(),除非你想为每个元素名称重复:visible[required](这会很难看) .
  • &lt;input type="button"&gt;&lt;input type="text"/&gt; 都被选为 $(':input')$('input') 但正如你所指出的,$(':input') 还包括 &lt;button&gt;hi&lt;/button&gt; 所以无论哪种方式你都可能不得不过滤掉一些东西....not('[type="submit"],[type="button"], button')
  • 也许也可以输入reset,但我想你已经知道了这一切,主要是为别人发帖。
  • 当然,这取决于他想要准确定位的目标。感谢 cmets。
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 2012-05-19
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多