使用javascript动态添加表单元素 - 不提交

时间:2009-09-06 17:43:33

标签: php javascript jquery html

编辑:我从头开始修复了问题。很抱歉浪费你们所有的时间。如果你有这种倾向,请投票结束。

当通过javascript添加输入字段时,我无法在表单中获取要提交的实际数据。这些字段显示在正确的位置,但是当我在服务器端执行var_dump(fieldname)时,没有任何内容出现。使用Live HTTP标头检查告诉我浏览器没有尝试提交动态添加的表单字段。

我是否需要以某种方式将动态创建的表单输入“附加”到表单?

我的代码:

HTML

<form id="att_form" method="post" name="add_attachments" enctype="multipart/form-data" action="#">
<-- below input to prove form submits, just not the dyn added elements -->
<input name="data[one]" type="text" />
<div id="add_fields"></div>
<input type="submit" />
</form>

的Javascript

function addFormField()
{
 var id = 1;
 var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>";
 $("#add_fields".append( htm );
}

当我提交表单时,我的输入名为data [one]显示为POSTd值,但添加addFormField()的输入不显示。它们在HTML中显示在正确的位置,但不要POST。我是否需要将元素作为子元素附加到我的表单元素以使其提交?

我已经看到了Submit form input fields added with javascript这就是我想要将数据专门附加到表单子项的地方,但这需要对我的CSS进行一些重组。所以,我希望在上面的代码中我可以做的很简单。

提前致谢!

编辑:修正了错别字,但仍无法正常工作。我决定使用上面SO链接中讨论的库免费JS方法,因为它工作正常。谢谢你的帮助!

4 个答案:

答案 0 :(得分:2)

您的代码中有2个拼写错误: htm而不是html

和add_fields / add_files

答案 1 :(得分:1)

您的代码中存在大量拼写错误。例如,您没有关闭jquery的选择器标记。

你放了 $("#add_fields".append( htm );

本来应该的 $("#add_fields").append( htm );

注意缺少的parantheses。

但我相信你的问题主要在于你是如何尝试通过PHP访问这些值的。我只是将您的源代码放在一个测试页面中,如果您正确访问这些值,它就会起作用。

<?php
foreach ($_REQUEST['txt'] as $printme) 
    echo $printme."<br/>";
?>

上述来源工作正常。

答案 2 :(得分:1)

当您添加/追加或使用innerHtml将表单字段作为html放置时,有时它会将其放在表单之外,您会将其视为表单的一部分,但在内部却不是。

要解决此问题,您需要添加form属性,其输入字段为form=myForm,myForm应为您的表单ID。

答案 3 :(得分:0)

这是您的实际代码吗?

如果是这样,你没有关闭输入标签和p标签..所以表格可能会忽略它们。

var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>";