如何从动态数组类型字段中获取值

4

我有一个与动态生成字段相关的问题。这些字段具有不同的类型,其类型取决于存储在我的数据库中的内容(文本、选择、单选等)。它们由我的PHP脚本生成并且它们都有相同的名称(ans[],这是一个数组)。

<input type='radio' name='ans[]' value='1'>
<input type='radio' name='ans[]' value='2'>
<input type='radio' name='ans[]' value='3'>

<select name='ans[]'>
    <option value='desktop'>Desktop</option>
    <option value='laptop'>Laptop</option>
    <option value='monitor'>Monitor</option>
    <option value='printer'>Printer</option>
</select>

<input type='text' name='ans[]' value=''>

我想使用JQuery获取每个字段的输入值。这可能吗?

为什么你用了相同的名称?请使用不同的名称。 - Tamil Selvan C
2个回答

2
$("[name=ans\\[\\]]").each(function() {
  alert( $(this).val() );
});

这应该可以工作。

JSFiddle 上有一个可行的示例。

以上是工作示例。


非常感谢,这对我很有帮助。但我还有一个问题,从上面的例子中,检索了每个单选按钮的所有值。如果我只想选择其中一个怎么办? - rhy
你可能需要使用多个选择器:$("[name=ans\\[\\]][type!=radio]").each(function() { /* 对非单选框输入进行任何操作 */ }$("[name=ans\\[\\]][type=radio]:checked").each(function() { /* 对已选中的单选框输入进行任何操作 */ } 新的 JSFiddle:http://jsfiddle.net/VcZWy/2/ - Bernardo Mendes
感谢您的帮助。我最终使用.filter(':checked')来确定所选单选按钮,并使用parent().find('input[name=dummyAnswer\[\]]'),因为在单选按钮旁边还有另一个文本框来获取文本框的值。 - rhy

1

有多种方法可以使用jQuery获取字段值,而不依赖于ID或类(尽管它们通常是最好的方法)。

您可以根据DOM中它们的位置选择字段:

CSS nth-child (http://www.w3schools.com/cssref/sel_nth-child.asp)

$('form#myform input:nth-child(2)')

jQuery .each (http://api.jquery.com/jQuery.each/)

$('form#myform input).each( function(){ /* functionality here */ });

这需要生成的字段按固定顺序。如果您为每个PHP数组项生成一个标签,并使用它来标识您的各个字段呢?

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