2008-11-23 24 views
11

我正在做一个简单的表单来创建民意调查,因此我希望可以添加额外的输入字段,以防用户想在民意调查中使用更多选项。提交表单输入框添加了javascript

我已经创建了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> 

回答

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> 

点击添加选项两次,你会得到

阵列([调查] =>阵列( [问题] => [option1] => [option2] => [option3] => [option4] =>)

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 + "&nbsp;&nbsp;" + 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 
12

我刚才调试了我的网站,一个类似的问题。对我来说,事实证明,我的表格和表单标签以“错误”的顺序造成了这个问题。

破碎:

 
table 
    form 

工作:

 
form 
    table 

这指出了一些非常重要的。浏览器可能会呈现正常,并且表单可能正常工作,但格式不正确,但仍然可以通过没有正确格式化的HTML来打破这种情况。也许我应该开始使用mod_tidy!

+0

我没有意识到这可能会有这样的效果,这对我有用。非常感谢:D – jwbensley 2011-09-05 10:02:18