2014-04-27 40 views
1

數組得到多維數組我有以下設置:如何從輸入

<input name="myInput[3][0]" type="text"> 
<input name="myInput[3][1]" type="text"> 
<input name="myInput[4][0]" type="text"> 
<input name="myInput[4][1]" type="text"> 

用PHP這是很容易的形式提交後訪問值。例如使用「post」方法,輸入的值存儲在多維數組$_POST['myInput']中。然後可以使用$_POST['myInput'][3][0]訪問每個維度中的第一個元素。

有沒有在JavaScript中的類似功能,甚至可以使用沒有通過「崗位」 - 方法提交表單?

JavaScript - get value from multiple inputs in an array,我添加了一個名爲 「myInput」 每個input - 元素類,像

<input name="myInput[3][0]" type="text" class="myInput"> 

然後我嘗試這樣的:

var myInput= document.getElementsByClassName('myInput'); 

但是,勿庸置疑,這僅提供了我一維數組不尊重任何數組鍵。所以不完全是爲了尋求的結果。 (對於班級來說,這似乎很奇怪)

回答

2

名稱之後你提供,你可以使用輸入的名稱「匹配」功能,以獲得例如索引

m = inputs[i].name.match(/\[(\d+)\]\[(\d+)\]/); 

一個完整的工作示例是可用here(的jsfiddle)

var inputs = document.getElementsByClassName('webcampics'), 
res = {}, i; 
for (i=0; i<inputs.length; i++){ 

    m = inputs[i].name.match(/\[(\d+)\]\[(\d+)\]/); 
    if(!res[m[1]]){ 
     res[m[1]] = {}; 
    } 
    res[m[1]][m[2] ]= inputs[i].value; 

    } 

console.log(res); 

至於使用類作爲選擇器。如果使用JQuery的,另一種是包裝一個div或表單內的所有輸入元素,給它一個ID(如「my_inputs」),那麼你就可以得到這樣的輸入:

var inputs = $('#my_inputs input'); 
+0

謝謝。這似乎工作。但是,正如我在文章中提到的,我仍然不滿意按類來選擇元素,因爲這似乎破壞了用css設置輸入元素的簡易性。每當我改變課程時,我都必須檢查CSS樣式和JavaScript評估。這並不是真正做到這一點的標準方法。有沒有一種方法可以僅使用名稱來選擇所有輸入元素? – Daniel

+0

你可以在一個元素上有多個類。您可以將其中一個用作選擇器,其餘用於樣式。使用類作爲選擇器非常普遍,我不認爲這很奇怪。 – DavidLin

+0

也許這只是因爲我只習慣使用CSS的類。具有這種雙重命名似乎很奇怪:一個用於名稱,另一個用於班級,而所有信息似乎都可以單獨從名稱訪問。 – Daniel

0

class name「myInput」在哪裏? 「myInput」是不是類的名字,它是「name」屬性

+0

感謝您的評論。這是一個誤解。我確實添加了這些類,但在第一個示例中沒有明確指出。我會解決我的問題,使其明確。 – Daniel