示例:我们假设我们有一个包含3个字段的表单:pc,part_id,part_details。有时您需要在添加pc时向数据库添加其他部分,因此应该复制part_id和part_details(part_id和part_details应该是对应的)。我想要的是将这两个字段附加到表单的最佳方法吗?
我知道如果您只想复制一个字段,可以将字段命名为:
<input type="text" name="part_id[]">
然后我们可以轻松地将后期数据作为数组获取。但是现在我们正在复制多个字段,如果我们在后端使用上面的方法,则两个/多个数组将不相关。这里描述的方法似乎是一个很好的http://www.quirksmode.org/dom/domform.html,但名称一直在变化这一事实使得使用后期数据变得复杂。
此处描述了另一种可能的方法Multiple Forms With Input Fields With The Same Name Attribute? Good Or Bad?。它提供了复制整个表单的想法。我不确定我是否理解正确,但当我尝试在同一页面中提交两个相同的表格并提交其中一个时,只会提交此表单中的数据,另一个将被忽略。它也不适合我的场景,因为并非所有字段都应该重复。
那么完成这项重复工作的最佳方法是什么?
答案 0 :(得分:1)
您可以使用其他级别的索引:
<input type="text" name="pc" />
<!-- First part -->
<input type="text" name="parts[0][part_id]" />
<input type="text" name="parts[0][part_details]" />
<!-- Duplicate part -->
<input type="text" name="parts[1][part_id]" />
<input type="text" name="parts[1][part_details]" />
<!-- Another duplicate part -->
<input type="text" name="parts[2][part_id]" />
<input type="text" name="parts[2][part_details]" />
可以使用jQuery轻松生成每个部分的字段(id和详细信息)。
答案 1 :(得分:1)
在您提供的链接中,他们没有复制表单,只是表单中的元素很好。如果你要添加的只是一台PC的多个部分,那么就不会有问题。零件将通过数组索引链接(您可以依赖于排序)。
part_id []的第一个实例将对应于part_details []的第一个实例。这应该与您的服务器端语言区分开来。例如,在PHP中,part_details [2]将对应于part_id [2]等。