Jquery 从表单字段创建多维数组

Jquery 从表单字段创建多维数组,jquery,Jquery,我正在尝试从表单字段创建一个多维数组,我可以使用jQuery循环并动态执行一些计算 该表单有一个add attendee/remove attendee选项,每个与会者有3个输入,因此我尝试创建一个类似这样的数组,其中包含字段名 attendees[0][name] = 'Name' attendees[0][email] = 'Email' attendees[0][type] = 'Normal' 我在jQuery中使用以下命令收集表单中输入的更改事件上的数组 var values = $

我正在尝试从表单字段创建一个多维数组,我可以使用jQuery循环并动态执行一些计算

该表单有一个add attendee/remove attendee选项,每个与会者有3个输入,因此我尝试创建一个类似这样的数组,其中包含字段名

attendees[0][name] = 'Name'
attendees[0][email] = 'Email'
attendees[0][type] = 'Normal'
我在jQuery中使用以下命令收集表单中输入的更改事件上的数组

var values = $("input[name='attendees[]']").map(function() {
    return $(this).val();
}).get();
console.log(values);
警报
只是让我知道它正在工作,但正如您从我的小提琴中看到的,无论与会者字段中有什么,数组总是空的


您只需在
tbody tr
元素上使用
map()
,而不是每行的第一个输入,然后使用
find()
获取所需的表单元素,就可以实现这一点

您还可以通过在要读取的表单元素上放置
类来简化选择器,否则您必须使用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);
}

这似乎部分满足了我的要求,但当移除与会者时,第二个对象仍然存在。此外,任何后续的与会者栏(第一个)上都没有定义与会者类型。类型的问题是我的错误,我在HTML字符串中遗漏了一个引号。还请注意,如果要在该点更新对象,则需要在删除事件处理程序中再次调用
calculate()
。这两个问题都解决了:没问题,很乐意帮忙。您可以通过单击左侧的绿色勾号来执行此操作