1

我正在开发一个需要输入数据行的Backbone应用程序(读:对象数组)。

我的表格如下所示:

<tr><td><input type=“text”name=“items[][qty]”></td><td><input type=“text”name=“items[][job_number]”></td><td><input type=“text”name=“items[][description]”></td><td><input type=“text”name=“items[][purchase_order]”></td></tr>[...]

具有动态行数。

我希望能够以以下形式检索数据:

{项目:[{数量:[val],作业编号:[val],描述:[val],采购订单:[val]},[...]]}

我找到的最接近的解决方案是亚伦·沙福瓦洛夫但它不支持输出中的数组(仅支持对象)。我可以修改他的代码来做我需要的事情,但我想我会先问这里,因为没有必要重新发明轮子。

我在项目中使用jQuery和Underscore,因此可以访问它们的方法。

1答案1

重置为默认值
1

我用这种方法获得多行文本框:

aItems=新数组();$(“table tbody tr”).each(函数(){var$this=$(this);aItems.push(项目推送)({qty:$this.find('input[名称=“qty”]').val(),job_number:$this.find('input[名称=“job_num”]').val(),description:$this.find('input[name=“description”]').val(),purchase_order:$this.find('input[名称=“purchase_dorder”]').val()});});

这个怎么样:

aItems=新数组();$(“table tbody tr”).each(函数(){var项={};$(this).find('input').each(function(){items[$(this).attr('name')]=$(this).val();}aItems.push(items);});
  • 这是一个很好的解决方案,但我希望这个解决方案不依赖底层标记(或需要事先知道字段名),这样我就可以保持代码DRY,并在多个视图中重用此方法。理想情况下,可以用它代替$(“#formID”).serialize() 评论 2012年11月9日9:54
  • 没有明确的输入字段怎么样?但我还没有真正尝试过这个代码。。
    – 尼克斯
    评论 2012年11月9日10:42
  • 这看起来应该有效,而且它比我试图使用的frankencode简单得多。我会测试一下,如果可以接受的话。 评论 2012年11月9日11:06

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.