修改serialize表单函数以获取输入ID而不是名称

时间:2013-12-09 14:11:45

标签: javascript jquery forms

我有一个JavaScript函数,它迭代一个表单以根据输入字段的名称获取输入值。但是,为了满足API post请求参数,我需要以下JSON格式的输入:

{
    "name": "mobile offers",
     "group_id": "35"
}

其中"名称" field是来自文本框和" group_id"的输入结果。字段是通过复选框选择选项的结果。如何更改此功能,以便它根据文本框字段的名称和复选框的ID进行输入?

$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

我尝试过使用两个独立的函数,一个用于名称,一个用于id,但是无法弄清楚如何将输出放在一起,将表单序列化两次没有意义。 / p>

1 个答案:

答案 0 :(得分:1)

如果name个复选框不正确,可以在序列化之前将其更改为id值

$(':checkbox').attr('name',function(){
 return this.id;
});
 /* now serialize form*/