从表单域创建多维数组

时间:2016-12-22 10:45:05

标签: jquery

我正在尝试从表单字段创建一个多维数组,我可以使用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就是这样,我知道它正在工作,但正如你可以从我的小提琴中看到的那样,无论参与者字段中的内容是什么,数组总是空的。

https://jsfiddle.net/b84s07x4/

1 个答案:

答案 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);
}

Working example