1

いくつかのドロップダウンがあるいくつかの s を通過する必要があります<tr>(それらはその場で生成されるため、事前に正確な数はわかりません)。ドロップダウンの名前はitem_size[]item_set[]およびとして設定されitem_quantity[]ます。それらの値を取得する必要がありますonsubmit

ここで各関数を使用する必要があることを理解しています$('tr.item').each(function(){。たとえば、それらを調べてから、3 つのドロップダウンのそれぞれで選択された値を取得する方法を見つける必要があります。

ここにアイデアはありますか?ありがとう。

<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[]」のようなselectの名前を設定する理由、つまり配列ブラケットを使用する理由がわかりませんでした。名前を設定する代わりに、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++;
}
于 2013-01-26T11:55:55.323 に答える
0

組み込み関数を使用するのと同じくらい簡単かもしれませんserializeArray():

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

必要に応じてセレクターを操作できます。データを取得したら、好きなことを行うことができます。

ここにフィドルがあります:http://jsfiddle.net/wnH4m/

編集:これは選択をグループ化しないため、それが必要な場合は、Antony's answer のように自分で作成することをお勧めします。(serializeArray() の出力を解析することはできますが、DOMデータセットをループするのは最善の方法ではない可能性があります。)

于 2013-01-26T12:16:52.467 に答える