簡體   English   中英

從動態創建的輸入字段加載數組

[英]Load array from dynamically created input fields

我有一個頁面,該頁面根據用戶選擇的創建數量來創建許多輸入:

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)硬編碼。 有沒有更簡單的方法可以做到這一點?

這是我更新的JSFiddle

更新了我上面的JS。 控制台正在打印[""]

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

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

對選擇器[attribute^="value"]開頭的屬性使用.map()函數

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

更新小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM