1

我有一个包含动态生成字段的表单。提交的表单中可以有任意数量的字段,具体取决于用户添加了多少字段。这是一个 JSFIDDLE,您可以参考它来了解我动态生成的字段类型。链接到 JSFIDDLE

这个 JSFIDDLE 和我的项目的唯一区别是,我不是在一组中生成 2 个下拉列表和 2 个输入字段,而是在一组中生成 3 个下拉列表和 1 个输入字段。到目前为止,可以生成的集合数量最多为 15 个,用户可以从 jsfiddle 的下拉列表中进行选择。

需要知道的是,如果用户生成了 7 个集合,我如何知道每个字段的名称,因为我必须使用 PHP 来处理此表单的数据并提交到数据库。

4

2 回答 2

3

看看这个。它在每个输入的末尾添加一个变量,因此您可以跟踪输入。

Edit1:名称将是这样的,

第 1 行 - 输入 1_1、输入 2_1、输入 3_1、输入 4_1

第 2 行 - 输入 1_2、输入 2_2、输入 3_2、输入 4_2 ...等等

Edit2:这个jsfiddle删除了添加的最新行。

于 2012-10-05T18:28:31.027 回答
3

您的 jQuery 代码已经明确命名了这些字段。例如:

$("<input>").attr("name", "a").appendTo(newDiv);

这将创建一个名为的输入a

<input name="a" />

您的 jQuery 为每个动态创建的输入提供相同的名称。如果您提交以下具有 3 个具有相同名称的字段的表单,服务器将收到a=value1&a=value2&a=value3.

<form>
    <input name="a" value="value1" />
    <input name="a" value="value2" />
    <input name="a" value="value3" />
    <input type="submit" />
</form>

这适用于大多数服务器技术,但不适用于 PHP。PHP 用最后一个值覆盖现有值。因此,如果您a在 PHP 中检查 的值,您只会看到value3. 但是,好消息是您可以稍微更改输入名称并让 PHP 识别所有值。在 PHP 中,当您将方括号附加到输入名称 ( name="a"become name="a[]") 时,PHP 会将值解析为一个数组。所以对于以下稍微修改的形式:

<form>
    <input name="a[]" value="value1" />
    <input name="a[]" value="value2" />
    <input name="a[]" value="value3" />
    <input type="submit" />
</form>

当您在 PHP 中查看 的值时,您将得到一个包含、和a的值数组。因此,只需将您的 jQuery 代码更改为在名称末尾使用方括号:value1value2value3

$("<input>").attr("name", "a[]").appendTo(newDiv);
于 2012-10-05T18:57:49.740 回答