【发布时间】:2014-01-23 04:25:51
【问题描述】:
已编辑:
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
var value = this.value || '';
if (/^\d+$/.test(value))
value = +value;
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(value);
} else {
o[this.name] = value;
}
});
return o;
};`
经过编辑希望更清楚。
难以理解这一点 - 剥夺睡眠 = 疯狂。
我有一个表单,可以简单地将数据序列化为 JSON 并将其存储以供以后使用。
<form id="form" method="post">
a? <input class="number" type="text" name="a" size="5" maxlength="5"/><br/>
第 1 项:
Type?:<br/>
<select size="2" name="type">
<option value="1">b</option>
<option value="2">c</option>
</select>
d:<input class="number" type="text" name="d" maxlength="2" size="2"/> <br/>
e:<input class="number" type="text" name="e" maxlength="2" size="2"/> <br/>
<p>Item 2:</p>
Type?:<br/>
<select size="2" name="type">
<option value="1">b</option>
<option value="2">c</option>
</select>
d:<input class="number" type="text" name="d" maxlength="2" size="2"/> <br/>
e:<input class="number" type="text" name="e" maxlength="2" size="2"/> <br/>
<input type="submit" />
当表单被序列化时,我得到的结果是:
JSON{
"a":1,
"type":[1,2],
"d":[99,33],
"e":[99,33]
}
我需要的是 JSON 的典型树形结构,其中每个项目都有自己的级别,例如:
{
"a": "1",
"item1":
{
"type": "1",
"d": "99",
"e": "99",
},
"item2":
{
"type": "2",
"d": "33",
"e": "33",
}
理想情况下,我希望有一个选项,用户可以说明表单应该请求多少项目的信息,但我首先需要一个基本的工作示例。
一旦我有了这些数据,我就会将它转换成 JSON,如果可能的话,我想要一个树状结构。任何帮助表示赞赏。这篇文章How to serialize a form into an object (with tree structure)? 有很大帮助,但它是我遇到问题的 HTML 的结构。再次感谢。
【问题讨论】:
-
我很难理解您的问题?考虑改写。您是否尝试动态模板化 Selects 和 fb 输入?
-
@Nix - 很抱歉造成混乱。我需要几个项目的详细信息。每个项目都是相同的对象类型并具有相同的字段但将具有不同的值。这有帮助吗?
-
不是真的......也许其他人可以解释你需要什么。也许从你想不通的开始?
-
@Nix - 我已经用我所拥有的和输出更新了这个问题。再次抱歉。
-
@Nix - 刚刚更新,如果还不清楚,请道歉
标签: javascript jquery html json forms