我需要经历一些<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>
答案 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 和可能不是最佳选择。)