我有一个包含动态生成字段的表单。提交的表单中可以有任意数量的字段,具体取决于用户添加的字段数。这是一个JSFIDDLE,你可以参考我知道我动态生成什么样的字段。 LINK TO JSFIDDLE
这个JSFIDDLE和我的项目的唯一区别是,不是在一个集合中生成2个下拉列表和2个输入字段,而是在一个集合中生成3个下拉列表和1个输入字段。现在,用户可以从jsfiddle的下拉列表中选择,最多可以生成15个集合。
需要知道的是,如果用户生成了7个集合,我怎么知道每个字段的名称,因为我必须使用PHP来处理此表单的数据并提交到数据库。
答案 0 :(得分:3)
看看this。它在每个输入的末尾添加一个变量,因此您可以跟踪输入。
编辑1:名称将如此,
row1 - input1_1,input2_1,input3_1,input4_1
row2 - input1_2,input2_2,input3_2,input4_2 ......等等
Edit2:此jsfiddle会删除最新添加的行。
答案 1 :(得分: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使用最后一个值覆盖现有值。因此,如果您在PHP中检查a
的值,则只能看到value3
。但是,好消息是您可以稍微更改输入名称并让PHP识别所有值。在PHP中,当您在输入名称后附加方括号(name="a"
变为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
的值时,您将获得包含value1
,value2
和value3
的值数组。因此,只需将jQuery代码更改为在名称末尾使用方括号:
$("<input>").attr("name", "a[]").appendTo(newDiv);