这是我的 JSFiddle
单击“+”按钮时,将克隆并动态附加边框表单元素。
“保存规则”按钮生成表单字段标签和值的 JSON 对象。 这是单击“保存规则”按钮时创建的 JSON 对象。
{
"nameRules": "",
"typeRules": "Type1",
"descriptionRules": "XYZ\n ",
"elhs": "",
"op": "<=",
"erhs": "",
"datatype": "",
"joinop0": "",
"elhs0": "",
"op0": "",
"erhs0": "",
"datatype0": ""
}
如何让它创建以下格式的 JSON 对象?
{
"nameRules": "",
"typeRules": "Type1",
"descriptionRules": "XYZ\n ",
"expressions": [{
"elhs": "",
"op": "<=",
"erhs": "",
"datatype": ""
},
{
"joinop0": "",
"elhs0": "",
"op0": "",
"erhs0": "",
"datatype0": ""
}]
}
任何帮助将不胜感激。 谢谢
最佳答案
嗯,代码可能不太漂亮,因为我不是 jquery 专家,但它应该按预期工作:FIDDLE
$('button.btn:contains("Save Rules")').on('click', function(e) {
console.log('hhh', $('form.form-horizontal#rules').find(':input:not(button):not(#joinop)').get());
var jsonData = $('form.form-horizontal#rules')
.find(':input:not(button):not(#joinop)').get()
.reduce(function(acc, ele) {
acc.expressions = acc.expressions||[];
if (ele.closest( "#container" ) || ele.closest('.parent-border')) {
if (ele.closest('.parent-border')) var i = 0;
else var i = $( "#container .child-border" ).index( ele.closest( ".child-border" )) +1
acc.expressions[i] = acc.expressions[i]||{};
acc.expressions[i][ele.name || ele.id] = ele.value;
}
else acc[ele.name || ele.id] = ele.value;
return acc;
}, {});
console.log(jsonData);
alert(JSON.stringify(jsonData, null, 4));
});
关于javascript - 如何修改我的 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280218/