Javascript 提交动态生成的表单
我正在创建一个网站,我有一个由Django创建的表单。加载页面后,用户可以通过单击按钮向表单添加文本输入。问题是,当单击submit按钮时,只有Django最初创建的文本输入被提交。换句话说,动态添加的额外文本输入不会被提交 我猜这是因为submit按钮只“感知”页面加载时出现的表单元素,而不是动态加载的元素。考虑到这一点,我猜我需要使用某种Javascript来提交所有表单元素,包括动态添加的元素,但我不知道如何做到这一点 我已经尝试了jQueryJavascript 提交动态生成的表单,javascript,jquery,html,Javascript,Jquery,Html,我正在创建一个网站,我有一个由Django创建的表单。加载页面后,用户可以通过单击按钮向表单添加文本输入。问题是,当单击submit按钮时,只有Django最初创建的文本输入被提交。换句话说,动态添加的额外文本输入不会被提交 我猜这是因为submit按钮只“感知”页面加载时出现的表单元素,而不是动态加载的元素。考虑到这一点,我猜我需要使用某种Javascript来提交所有表单元素,包括动态添加的元素,但我不知道如何做到这一点 我已经尝试了jQuerysubmit函数,但我真的不知道该如何使用它。
submit
函数,但我真的不知道该如何使用它。任何提示都将不胜感激
编辑:这里有一个代码片段,它显示了在向“源”动态添加两个以上文本输入后HTML的外观
来源:
//页面加载时显示
+//用户单击此按钮可将更多文本输入附加到表单中
//动态添加
//动态添加
笔记:
好的,我解决了这个问题。我有一个表格,它安排了表格的所有文本输入,表格也包含了表格本身。事实证明,通过将其反转,并将表封装在表单中,所有动态生成的输入都会成功发布。再次感谢那些在上述评论中提供意见的人——获得其他意见和观点总是很有帮助的
所以我的问题是(我知道你不应该在回答中提问,但万一有人想回答…):我怎么会知道这个?如果您使用的是编译语言,编译器可能会为您捕捉到这一点。这就是你凭经验掌握的窍门吗?有没有什么书可以帮助我处理像这样的基本问题?我发现web开发非常乏味和令人沮丧,因为我经常因为这样的小错误而挂断很长一段时间,我假设它不一定是这样;我只是不太知道如何改进。您是否检查过动态添加的输入元素是否添加到您提交的表单中,而不是其他元素?@Arkantos我是个新手--我该怎么做?@ArturFilipiak。。这与事件委派有何关系:)?我认为这不是绑定事件处理程序,而是提交修改后的form@BrianSnow新的太nee工作示例,用于建议。您可以使用
$('form')提交forn。使用AJAX右键单击表单序列化()。。检查元素并查看动态添加的文本输入是否在您发布的表单中。。
<table>
<form class="dataInput" action="/foner/116" method="post">
<input type='hidden' name='csrfmiddlewaretoken' value='YYuqTzXUVosu1s2HD3zS00DpoPwQ7N0k' />
<tbody class="origin">
<tr>
<th>
<label>Origin:</label>
</th>
<td>
<input id="id_Origin-0" maxlength="200" name="Origin-0" type="text" value="A native of Georgia" /> // PRESENT AT PAGE LOAD
</td>
<td>
<button class="adder origin">+</button> // USER CLICKS THIS TO APPEND MORE TEXT INPUTS TO THE FORM
</td>
</tr>
<tr>
<th>
</th>
<td>
<input type="text" value="" maxlength="200" name="origin[]"></input> // DYNAMICALLY ADDED
</td>
</tr>
<tr>
<th>
</th>
<td>
<input type="text" value="" maxlength="200" name="origin[]"></input> // DYNAMICALLY ADDED
</td>
</tr>
</tbody>
<tr>
<th>
<label>Notes:</label>
</th>
<td>
<input class="submitButton" type="submit" value="S" />
</td>
</tr>
</form>
</table>