1

我需要经过几个<tr>s (我事先不知道确切的数字,因为它们是动态生成的),我有一些下拉菜单。下拉菜单的名称设置为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>
4

3 回答 3

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。每个项目由 3 个键值对组成item_size[]item_set[]item_quantity[]

于 2013-01-26T11:42:54.440 回答
0

@Jeremy我不明白为什么你为选择设置名称,例如'item_size []',即带有数组括号。而不是设置名称,使用像 id ='item_size' 这样的 id 属性,你必须为你的 'td' 设置一个 'id' 或 'class'

<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>

我假设您的“提交”是一个简单的按钮单击,然后您可以获得每个下拉列表的选定项目:

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++;
}
于 2013-01-26T11:55:55.323 回答
0

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

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

您可以操纵选择器以适合,一旦您拥有数据,您就可以用它做您喜欢的事情。

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

编辑:这不会对您的选择进行分组,所以如果这是您需要的,那么您最好像安东尼的回答那样滚动自己。(您可以解析 serializeArray() 的输出,但循环遍历 DOM数据集可能不是最好的主意。)

于 2013-01-26T12:16:52.467 回答