使用jQuery获取表单数组的值

时间:2012-03-26 14:42:59

标签: php jquery arrays

对于这个答案看起来很难但没有运气。

我在表单中有3个选择列表。第一个列表已经是表单的一部分,后两个是动态添加的。这些选择列表是名为event_staff []的数组的一部分。

<select name="event_staff[]" class="event_staff">
<option value="1">Mark</option>
<option value="2">Sue</option>
</select>

<select name="event_staff[]" class="event_staff">
<option value="1">Mark</option>
<option value="2">Sue</option>
</select>

<select name="event_staff[]" class="event_staff">
<option value="1">Mark</option>
<option value="2">Sue</option>
</select>

用户可以从每个列表中选择一个人,然后通过AJAX / Json将其发送到PHP脚本,该脚本遍历数组并将选定的人员插入数据库。

对于我的生活,我不知道如何访问列表的选定值并将它们作为数组发送到PHP脚本。

因为选择列表是动态创建的,所以我没有使用ID来访问它们。我反而依赖于按名称访问他们的值。

select[name='event_staff[]']

我曾尝试过此代码但警报返回空:

var event_staff = new Array();
$("select[name='event_staff[]']:selected").each(function() {
event_staff.push($this).attr('value');
});
alert(event_staff);

感谢。

解决了以下问题,但不确定它是否漂亮:

var event_staff = new Array();
$('select[name="event_staff[]"] option:selected').each(function() {
event_staff.push($(this).attr('value'));
});

看来我需要选项:已选中。虽然这似乎没有创建一个数组,但我已经在分隔符上的PHP中展开了变量并以这种方式创建了数组。

2 个答案:

答案 0 :(得分:8)

var event_staff = [];
$("select[name='event_staff[]'] option:selected").each(function () {
    event_staff.push( this.value );
});
alert(event_staff);

这是小提琴:http://jsfiddle.net/Rx6Fk/


如果您想要该人的姓名,请使用.text()

var event_staff = [];
$("select[name='event_staff[]'] option:selected").each(function() {
    event_staff.push( $.text(this) );
});
alert(event_staff);

这是小提琴:http://jsfiddle.net/Rx6Fk/1/


或者,您可以使用jQuery的.map方法:

var event_staff = $("select[name='event_staff[]'] option:selected").map(function() {
    return $.text(this);
}).get();
alert(event_staff);

这是小提琴:http://jsfiddle.net/Rx6Fk/2/

答案 1 :(得分:0)

.val()将返回select的选定值。

var event_staff = [];
$('select[name="event_staff[]"]').each(function() {
   event_staff.push($(this).val());
});
alert(event_staff);

演示:http://jsfiddle.net/fHbaw/