如何使用下拉数组中的jQuery获取值

时间:2013-01-26 11:26:41

标签: jquery arrays

我需要经历一些<tr>(事先我不知道确切的数字,因为它们是动态生成的),我有几个下拉列表。下拉列表的名称设置为item_size[]item_set[]item_quantity[]。我需要得到他们的价值onsubmit

我知道我需要在这里使用每个函数,比如$('tr.item').each(function(){来完成它们,然后需要找到一种方法来获取三个下拉列表中每个值的选择值。

这里有什么想法吗? 感谢。

<tr class="item">
    <td>some stuff</td>
    <td><select name = "item_size[]" ...><option>...</option><option>...</option></select></td>
    <td><select name = "item_set[]" ...><option>...</option><option>...</option></select></td>
    <td>some stuff</td>
    <td><select name = "item_quantity[]" ...><option>...</option><option>...</option></select></td>
    <td>some stuff</td>
</tr>
<tr class="item">
    <td>some stuff</td>
    <td><select name = "item_size[]" ...><option>...</option><option>...</option></select></td>
    <td><select name = "item_set[]" ...><option>...</option><option>...</option></select></td>
    <td>some stuff</td>
    <td><select name = "item_quantity[]" ...><option>...</option><option>...</option></select></td>
    <td>some stuff</td>
</tr>
<tr class="item">
    <td>some stuff</td>
    <td><select name = "item_size[]" ...><option>...</option><option>...</option></select></td>
    <td><select name = "item_set[]" ...><option>...</option><option>...</option></select></td>
    <td>some stuff</td>
    <td><select name = "item_quantity[]" ...><option>...</option><option>...</option></select></td>
    <td>some stuff</td>
</tr>

3 个答案:

答案 0 :(得分:3)

var inputs = new Array();
$("tr.item").each(function() {
    var tr_inputs = new Array();
    $(this).find("select").each(function() {
        tr_inputs[$(this).attr("name")] = $(this).val();
    });
    inputs.push(tr_inputs);
});
console.log(inputs);

您可以从数组inputs中检索每个项目的值。每个项目包含item_size[]item_set[]item_quantity[]的3个键值对。

答案 1 :(得分:0)

@Jeremy我不明白为什么你为select这样的'item_size []'设置名称,即使用数组括号。 使用id ='item_size'之类的id属性而不是设置名称,你必须将'id'或'class'设置为'td',如

<td class = "itemsize"><select id= "item_size" ...><option>...</option><option>...</option></select></td>
    <td class = "itemset"><select id= "item_set" ...><option>...</option><option>...</option></select></td>

我认为你的'onsubumit'是一个简单的按钮点击, 然后,您可以将每个下拉列表中的选定项目作为:

var count =0, itemSize = new Array(), itemSet = new Array();    
$('#yourTableId tr').each(function(index) {

 itemSize[count] = $(this).find('.itemsize').find('#item_size:selected').val();
 itemSet[count] = $(this).find('.itemset').find('#item_set:selected').val();
count++;
}

答案 2 :(得分:0)

可能就像使用内置函数serializeArray()一样简单:

var result = $('select').serializeArray();

您可以操纵选择器以适应,一旦获得数据,您就可以随意使用它。

这是一个小提琴:http://jsfiddle.net/wnH4m/

编辑:这不会对您的选择进行分组,因此,如果这就是您所需要的,那么您最好在Antony的答案中滚动自己。 (您可以解析serializeArray()的输出,但在数据集上遍历DOM 可能不是最佳选择。)