我正在尝试从表单字段创建一个多维数组,我可以使用jQuery循环并执行一些计算。
表单有一个add attendee / remove attendee选项,每个与会者有3个输入,所以我试图用字段名称创建一个这样的数组
attendees[0][name] = 'Name'
attendees[0][email] = 'Email'
attendees[0][type] = 'Normal'
我在jQuery中使用以下内容来收集表单中输入的change事件的数组。
var values = $("input[name='attendees[]']").map(function() {
return $(this).val();
}).get();
console.log(values);
alert
就是这样,我知道它正在工作,但正如你可以从我的小提琴中看到的那样,无论参与者字段中的内容是什么,数组总是空的。
答案 0 :(得分:3)
您可以非常简单地在map()
元素上使用tbody tr
,而不是每行中的第一个输入,然后使用find()
来获取所需的表单元素。< / p>
您还可以通过在表单元素上放置class
来简化选择器,否则您必须使用name属性将选择器字符串混合在一起,然后必须转义其中包含的引号。这很快就会变得混乱。
试试这个:
function calculate() {
var attendees = $('.attendee-table > tbody > tr').map(function() {
return {
name: $(this).find('.attendee-name').val(),
email: $(this).find('.attendee-email').val(),
type: $(this).find('.attendee-type').val()
}
}).get();
console.log(attendees);
}