我正在处理一个表单,我需要在用户单击“更多小部件”按钮时动态添加输入。表单中有一个隐藏的div,我用jQuery将输入附加到它,如下所示:
$('div#newwidgetinputs').show().append(newInputs);
它们显示,正确命名等,但是当我发布表单时,它们的内容不在PHP $_POST
数组中。
所以我尝试将它们附加到表单本身:
$('form#someform').append(newInputs);
在页面上看不到它们,但是我给它们默认值,这次它们做出现在'$ _POST'中。
这让我觉得div#newwidgetinputs
不被认为是形式的一部分,但我不明白为什么;它位于开始和结束<form>
标签之间。
为什么这些输入不会发布?
答案 0 :(得分:3)
如果HTML格式不正确,浏览器可能会认为动态输入不在表单之内;例如:
<div id="div_1">
<form>
<div id="div2">
... some HTML here
</div></div>
... other HTML here
</form>
浏览器可以在表单之外考虑“其他HTML”,因为第二个</div>
关闭了'#div_1'div,即表单的容器,因此在第二个{{1}之后浏览器认为表单要关闭。
答案 1 :(得分:0)
为什么不填写所有元素并将它们隐藏起来?如果用户点击添加更多小部件,则将另一个隐藏字段设置为1。