2013-06-12 65 views
0

我不理解jQuery如何處理多維數組。jQuery從大型表單創建/添加到多維數組

我有一個非常大的窗體內的嚮導插件。一步就可以有多達10個標籤,在每個標籤內可以有數十個文本輸入。我試圖使用.each來收集所有文本輸入並將它們排列在多維數組中。

var ItemsArray = []; 
var ItemGroup = []; 
$('.GroupOfTabs').each(function() { //for each tab 
    var TabName = $(this).val(); 

    //for each input inside each tab 
    $('#step-3 tr[room='+TabName+'][object=item]').each(function() { 
    var value1 = $('#step-3 input[tab='+TabName+'][other=value1]).val(); 
    var value2 = $('#step-3 input[tab='+TabName+'][other=value2]).val(); 
    var value3 = $('#step-3 input[tab='+TabName+'][other=value3]).val(); 
    var value4 = $('#step-3 input[tab='+TabName+'][other=value4]).val(); 

    ItemGroup.push({value1, value2}, {value3, value4}); 
    ItemsArray[TabName].push(ItemGroup); 
    }); 
}); 

HTML看起來是這樣的:

<div class="GroupOfTabs" value="tab1"> 
    <table> 
    <tr room="tab1" object=item> 
     <td><input tab=tab1 other=value1></td> 
     <td><input tab=tab1 other=value2></td> 
     <td><input tab=tab1 other=value3></td> 
     <td><input tab=tab1 other=value4></td> 
    </tr> 
    </table> 
</div> 

等許多標籤和更多的投入。

那麼,我希望的是一個很好的有組織的多維數組,像這樣:

ItemsArray 
{ 
    Tab1 : { value1 : value2 }, {value3 : value4} 
    Tab2 : { value1 : value2 }, {value3 : value4} 
    Tab3 : { value1 : value2 }, {value3 : value4} 
} 

//An easier way for me to articulate the array structure is php style: 

(ItemsArray => array(Tab1 => array(value1 => value2, value3 => value4), 
       array(Tab2 => array(value1 => value2, value3 => value4), 
       array(Tab3 => array(value1 => value2, value3 => value4)) 

我還沒有去打擾顯示實際輸出我得到的是什麼...安全的假設它的可怕的混亂。它甚至不會返回所有文本輸入,只是每個選項卡的第一個輸入。

正確的方法?

在此先感謝!

+0

這將有助於也看到一些示例HTML。在此期間,「RoomName」的定義在哪裏? – BrianS

回答

0

您正在將您的變量定義爲數組,但基於您希望的輸出,它看起來像您真的想使用對象。我們不太瞭解你的文檔結構,所以下面的內容只是基於你想要做的事情而做的猜測。

(我假設你是在值1-VALUE4得到正確的值。)

var ItemsArray = {}; $('.GroupOfTabs').each(function() { //for each tab var TabName = $(this).val(); 

    //for each input inside each tab $('#step-3 tr[room='+TabName+'][object=item]').each(function() { 
    var value1 = $('#step-3 input[tab='+TabName+'][other=value1]').val(); 
    var value2 = $('#step-3 input[tab='+TabName+'][other=value2]').val(); 
    var value3 = $('#step-3 input[tab='+TabName+'][other=value3]').val(); 
    var value4 = $('#step-3 input[tab='+TabName+'][other=value4]').val(); 

    ItemsArray[TabName] = [ { value1 : value2 } , { value3 : value4 } ]; }); }); 

ItemsArray結構並沒有真正多大意義,我出這樣的上下文。假設您的示例輸出實際上是您想要的,我認爲這應該起作用。