【问题标题】:How to append additional sets of fields to html form如何将其他字段集附加到 html 表单
【发布时间】:2014-06-25 05:00:31
【问题描述】:

示例:假设我们有一个包含 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?。它提供了复制整个表单的想法。我不确定我是否理解正确,但是当我尝试将两个相同的表单放在同一个页面中并提交其中一个时,只会提交来自该表单的数据,另一个将被忽略。它也不适合我的场景,因为并非所有字段都应该重复。

那么完成这项复制工作的最佳方法是什么?

【问题讨论】:

    标签: javascript php jquery html forms


    【解决方案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]" />
    

    每个部分的字段(id 和 details)都可以使用 jQuery 轻松生成。

    【讨论】:

    • 这似乎是个好主意,我测试后会回来,谢谢
    • 在实际工作之后,我发现 sahbeewah 的答案可以节省更多时间。此处的这个答案使下一步操作数据变得容易,但是通过javascript在前端生成此字段需要更多时间。无论如何,为这个答案投票,因为它让我大开眼界。
    【解决方案2】:

    在您提供的链接中,他们没有复制表单,只是表单内的元素很好。如果您添加的只是单个 PC 的多个部件,那么应该没有问题。这些部分将通过数组索引链接(您可以依赖排序)。

    part_id[] 的第一个实例将对应 part_details[] 的第一个实例。这在您的服务器端语言中应该是可区分的。以 PHP 为例,part_details[2] 将对应 part_id[2] 等。

    【讨论】:

    • 这应该是一种可行的方法,但我仍然不明白他们想要做什么。我只是在寻找一种更理想的方式,更少担心服务器端数据操作
    • 呃,不会比这更干净了。下一个(浪费的)步骤是在提交时生成一个自定义 JSON 对象,并将 JSON 作为数据提交。
    • 你是对的,你的方法更好,它节省了在 javascript 中复制字段的时间。
    猜你喜欢
    • 2015-01-14
    • 2013-07-26
    • 1970-01-01
    • 2010-11-03
    • 2012-07-23
    • 2018-04-14
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多