我有以下HTML代码:
<div class="input_data">
<input type="text" name = 'firstname' class="fname">
<input type="text" name = 'lastname' class="lname">
</div>
<br>
<br>
<div class="input_data">
<input type="text" name = 'firstname'class="fname">
<input type="text" name = 'lastname' class="lname">
</div>
<button id="sbmt">Submit</button>
我试图通过以下代码将输入中的字符串对分配为jQuery数组中的对象:
$('#sbmt').on('click', function() {
var this_row = {};
//var all_rows = [];
$('.input_data').each(function(){
$('> input', this).each(function(){
//this_row[$(this).attr('name')] = $(this).val();
//this_row.push($(this).attr('name')) = $(this).val();
keyvalue = $(this).attr('name');
namevalue = $(this).val();
alert(keyvalue + " is : " + namevalue);
this_row[keyvalue] = namevalue;
//all_rows.push({$(this).attr('name'):$(this).val()});
});
});
正如你所看到的那样,我已经用all_rows注释了这些语句 - 实际上它是错误地使用&#34;这个&#34;这里不合法。
完成后,当前形式的代码仅存储来自第二组输入的值。
我实际上需要生成像
这样的对象数组[{firstname:firstname-1, lastname:lastname-1}, {firstname:firstname-2, lastname:lastname:2}]
我怎样才能做到这一点?另外,我想知道如何使声明all_rows.push({$(this).attr('name'):$(this).val()});
起作用。
答案 0 :(得分:2)
你需要这样的东西:
$('#sbmt').on('click', function() {
var all_rows = [];
$('.input_data').each(function() {
var this_row={};
$(this).find("input").each(function(){
keyvalue = $(this).attr('name');
namevalue = $(this).val();
this_row[keyvalue] = namevalue;
});
all_rows.push(this_row);
});
console.log(all_rows);
});