【问题标题】:modify serialize form function to take input ID instead of name修改序列化表单函数以输入 ID 而不是名称
【发布时间】:2013-12-09 14:11:44
【问题描述】:

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

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

其中“name”字段是从文本框输入的结果,“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;
};

我尝试过使用两个单独的函数,一个用于 name,一个用于 id,但不知道如何将输出放在一起,并且两次序列化表单没有意义。

【问题讨论】:

  • 那么名称在复选框上没有意义吗?很简单,先改名字,再序列化
  • 是的,名字毫无意义,但你是什么意思?

标签: javascript jquery forms


【解决方案1】:

如果name的复选框不正确,可以在序列化之前将它们简单地更改为id的值

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

【讨论】:

  • 谢谢,我是在序列化函数中还是在它之前这样做?
  • 可以把它放在.fn.serializeObject = function () {里面。
  • 您是否也可以应用相同的概念并将“类”也更改为“名称”?
猜你喜欢
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多