如何将表行序列化为json对象
如何将表序列化为json数组,以便每个数组元素都包含表示一个表行的json对象:
[ { name: "variable1", valuetostore: "ab", totaltype: "Lowest" }, { name: "variable2", valuetostore: "cd", totaltype: "Highest" } ]
我尝试了下面的代码,但这会产生具有名称和值属性的对象,并且数组中的成员多于表行中的成员。
它还序列化了隐藏的第一行。 它是行添加的模板行,不应该在结果中使用。
$(function() { $("#btnShow").on("click", function() { console.log($("#myForm").serializeArray()); }); });
您可以将nth-child
选择器与n+2
以仅选择tr> = 2:
#myForm tbody tr:nth-child(n+2)
但是,结果将不是每个对象都是行对象的对象数组。 结果将是一个对象数组,其中每个select / input / textarea本身就是一个对象。
您可以在trs
上使用each()
函数来遍历所有这些函数以获得预期结果。
以下是两个选项的示例:
$(function() { $("#btnShow1").on("click", function() { console.log($("#myForm tbody tr:nth-child(n+2) textarea,#myForm tbody tr:nth-child(n+2) input,#myForm tbody tr:nth-child(n+2) select").serializeArray()); }); $("#btnShow2").on("click", function() { var ar = []; $("#myForm tbody tr:nth-child(n+2)").each(function() { rowData = $(this).find('input, select, textarea').serializeArray(); var rowAr = {}; $.each(rowData, function(e, v) { rowAr[v['name']] = v['value']; }); ar.push(rowAr); }); console.log(ar) }); });