从动态创建的输入字段加载数组

时间:2015-05-20 08:29:53

标签: javascript jquery arrays

我有一个页面根据用户选择创建的数量创建了许多输入:

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。控制台正在打印[""]

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

对属性使用.map()函数以选择器[attribute^="value"]

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

<强> Updated Fiddle