2015-05-20 38 views
1

我已經創建了一些基於用戶的選擇多少創建輸入頁面:負載數組字段

select id="noOfDirectors" name="amount" onchange="addInput();"> 
    <option value="">How Many Directors</option> 
    <option value="1" >1</option> 
    <option value="2" >2</option> 
    <option value="3" >3</option> 
    <option value="4" >4</option> 
    <option value="5" >5</option> 
    <option value="6" >6</option> 
    <option value="7" >7</option> 
    <option value="8" >8</option> 
    <option value="9" >9</option> 
    <option value="10" >10</option> 
</select> 
<div id="inputs"></div><br/> 
<button id="nod" onclick="return false">Submit</button> 

的.js文件創建形式:

function addInput(){ 
noOfDirectors = $('#noOfDirectors').val(); 
var inputs = $('#inputs').empty(); 
inputs.innerHTML = ""; 
for(i = 0; i < noOfDirectors; i++) { 
    inputs.append('Director '+ (i+1) +' Name: <input type="text" name="directorName[' + i + ']" /><br/>Director '+ (i+1) +' Customer Number: <input type="text" name="directorECN['+i+']" /><br/><br/>'); 
} 
$("#nod").show(); 

directors = $('[name^=directorECN]').map(function(i) { 
//return this.name; 
    return this.value; // for real values of input 
}).get(); 


} 

$(document).ready(function() { 
    $('#nod').click(function() { 
     console.log(directors); 
    }); 
}); 

現在,我想利用這些每個輸入directorECN['+i+']名稱,並將它們添加到全局聲明數組:

var directors = new Array();

我很難找出一個沒有硬編碼10(0-9)每個可能的輸入名稱的語法。有沒有更簡單的方法來做到這一點?

這裏是我的UPDATED JSFiddle

更新我的上述JS。控制檯正在打印[""]

+0

開始你沒有解釋爲什麼你需要的,但聽起來好像你只是想序列化FORM,請參閱:https://api.jquery.com/serialize/或https://api.jquery.com/serializearray/ –

+0

稍後在代碼中,我需要在排序inp後的不同時間列出UTS。 – jpgerb

回答

3

可以使用.map()Attribute Starts With Selector [name^=」value」]返回的元素的name屬性中獲取數組。

var directors = $('[name^=directorECN]').map(function(i) { 
    //return this.name; 
    return this.value; // for real values of input 
}).get(); 
+2

最後不要忘記'.get()'。它將返回純JS數組而不是jQuery集合對象。 – VisioN

+0

謝謝@VisioN ... – Adil

+1

我認爲OP的名字實際上是輸入值 –

2

使用.map()功能在屬性與選擇[attribute^="value"]

var directors = $('[name^="directorECN"]').map(function() { 
    return this.name  //to get value use this.value 
}).get(); 

Updated Fiddle

+0

這是不是已經發布的答案? –

+0

@A。Wolff,答案沒有返回實際的'name'數組,這是* [稍後編輯](http://stackoverflow.com/posts/30344380/revisions)*,但我會問,我應該刪除我的? –

+0

我不是國防部,但我認爲這是確定的 –