我正在创建一个简单的表单来创建民意调查,因此我希望能够添加其他输入字段,以防用户在民意调查中需要更多选项。
我已经制作了向表单添加新输入字段的Javascript代码,但是在提交表单时不会发布动态添加的输入字段(我使用标准的提交按钮)。
是否有某种方法可以将动态添加的字段作为表单的一部分发布/识别?
<form id="myForm" method="post">
<input type="submit">
<input type="text" name="poll[question]">
<input type="text" name="poll[option1]">
<input type="text" name="poll[option2]">
</form>
<a href="javascript:addOption();">Add option</a>
<script>
var optionNumber = 3; //The first option to be added is number 3
function addOption() {
var theForm = document.getElementById("myForm");
var newOption = document.createElement("input");
newOption.name = "poll[option"+optionNumber+"]"; // poll[optionX]
newOption.type = "text";
theForm.appendChild(newOption);
optionNumber++;
}
</script>
答案 0 :(得分:13)
我刚调试了我的网站,我遇到了类似的问题。对我来说,事实证明,以“错误”的顺序使我的表格和表格标签导致了这个问题。
断裂:
table form
工作:
form table
这指出了一些非常重要的东西。浏览器可以呈现正常,并且表单可能工作正常,格式错误的html,但你仍然可以通过没有正确格式化的html来破坏这样的事情。也许我应该开始使用mod_tidy!
答案 1 :(得分:4)
您的代码可以正常工作:
<?php
print_r($_REQUEST)
?>
<html>
<body>
<form id="myForm" method="post">
<input type="submit">
<input type="text" name="poll[question]">
<input type="text" name="poll[option1]">
<input type="text" name="poll[option2]">
</form>
<a href="javascript:addOption();">Add option</a>
<script>
var optionNumber = 3; //The first option to be added is number 3
function addOption() {
var theForm = document.getElementById("myForm");
var newOption = document.createElement("input");
newOption.name = "poll[option"+optionNumber+"]"; // poll[optionX]
newOption.type = "text";
theForm.appendChild(newOption);
optionNumber++;
}
</script>
</body>
</html>
点击添加选项两次,即可获得
数组([poll] =&gt;数组([问题] =&gt; [选项1] =&gt; [选项2] =&gt; [选项3] =&gt; [选项4] =&gt;))
答案 2 :(得分:2)
你确定在这里没有犯错吗?
我在新页面中复制了您的代码,并将以下内容添加到ASP.NET页面后面的代码中(它应该适用于任何框架):
protected void Page_Load(object sender, EventArgs e)
{
foreach (string p in this.Request.Params.Keys) {
if (p.StartsWith("poll")) {
Response.Write(p + " " + this.Request.Params[p] + "<br />");
}
}
}
我添加了其他字段并输入了测试值,输出清楚地显示了发回服务器的所有动态输入字段。
这是输出:
poll[question] test1
poll[option1] test2
poll[option2] test3
poll[option3] test4
poll[option4] test5
poll[option5] test6
poll[option6] test7
答案 3 :(得分:0)
您始终可以使用javascript函数自行序列化表单,然后提交(使用AJAX或获取请求或其他内容)。
http://malsup.com/jquery/form/comp/