jQuery - 通过容器 ID 获取表单元素

10

最简单的方法是获取包裹元素内所有表单元素。

<form name="myForm">
  <input name="elementA" />
  <div id="wrapper">
    <input name="elementB" />
    <textarea name="elementC" />
  </div>
</form>
在上述HTML代码中,我想要获取elementB和elementC的元素,但不需要elementA。我不想列出所有表单元素类型(如select、textarea、input、option...)。我更喜欢使用myForm.elements。
有什么想法吗?
4个回答

16

如果您不想指定所有的选择器,请使用:input伪选择器:

$('#wrapper :input');

:input 选择所有的 input、textarea、select 和 button 元素。在这里使用 .children() 是不必要的。


我真的需要更多地了解伪选择器。这已经是第二次有人因为我不知道它们而提出更好的解决方案了 :) - Kerry Jones
是的,我不知道为什么我认为它只适用于输入元素,比如:reset、radio... - Davide Ungari
@ungarida:因为 input:input 只有一个字符的差别,但后者包括了所有表单控件类型。 - Powerlord
很棒的答案,更多关于 :input 选择器的内容请参考 jQuery api :input - chim
这也适用于在包装器内部的多个层次中查找表单元素... $('#wrapper').find(':input'); 这将查找包装器内部子元素或包装器内部的输入。 - raphie

1
如果它里面只有表单元素。
$('#wrapper').children();

如果还有其他的东西

$('#wrapper').children( 'input, select, textarea' );

<input name="elementA" /> 找不到,怎么办? - jigfox
他说:“我想要元素B和元素C但不要元素A”。一开始他要求容器内的表单元素。 - Kerry Jones
是的,这是第二种情况。但我更喜欢不使用列表“input、select、textarea”,因为我担心可能会忽略某些表单元素类型。有没有办法使用form.elements数组呢? - Davide Ungari
你是对的,抱歉,我错过了这个。 @ungarida:没有插件,没有更简单的方法。 - jigfox

0

jQuery('form[name=myform] div#wrapper').children();

jQuery('form[name=myform] div#wrapper').children();


你想要找到元素A吗?在这里尝试一下代码,它不应该出错。 - sushil bharwani

0

关于什么?

$(form)[0].elements

我知道上面的代码在Chrome中可以工作。没有测试其他浏览器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接