添加了Javascript / jQuery的动态表单元素未被POST

时间:2012-02-20 00:17:43

标签: javascript jquery forms submit

我读了很多关于这个主题的讨论。 (包括“Submit form input fields added with javascript”,它最终让我走上了正确的轨道。)然而,他们都没有完全回答这个问题或解决我的问题,所以我想我会发一个解决方案的帖子。

我试图使用jQuery动态地将额外的文本输入字段添加到表单中,我发现这个代码:

jQuery("#form_table").append(
'<tr><th>'+
'<label><b>Date: </b></label></th><td>'+
'<input type="text" id="extra_date'+counter+'" />'+
'<label><b>Time: </b></label>'+
'<input type="text" id="extra_time'+counter+'" /></td></tr>');

文本字段已添加到表单中的表格中,当我使用firebug调查DOM时,它们就在那里。但是,当我提交表单时,变量extra_date1 / extra_time1不在$ _POST数组中。我发现这段代码没有将元素添加到FORM本身。上面的帖子使用JS指出了我正确的方向,而不是jQuery。我试着在帖子中提到他们在帖子中提到的那些,但是这不起作用。最终,这段代码对我有用:

var theForm = document.getElementById("form_table");
var newOption = document.createElement("input");
newOption.name = "extra_date"+counter;
newOption.type = "text";
theForm.appendChild(newOption);
var newOption = document.createElement("input");
newOption.name = "extra_time"+counter;
newOption.type = "text";
theForm.appendChild(newOption);

form_table元素是表单标记内的表标记。与上面帖子中的代码不同,我发现你不能只将它附加到表单元素本身。它必须是形式中的一个元素。

我知道这看起来很简单,但看起来网上很多人都遇到了同样的问题,所以我希望这对于那些像我一样拔毛的人来说是一个简明的答案。

1 个答案:

答案 0 :(得分:1)

你的代码只有id =“”没有name =“”你应该有name =“”这就是发布的内容。 。

请改用此代码:

jQuery("#form_table").append(
'<tr><th>'+
'<label><b>Date: </b></label></th><td>'+
'<input type="text" name="extra_date'+counter+'" />'+
'<label><b>Time: </b></label>'+
'<input type="text" name="extra_time'+counter+'" /></td></tr>');