编辑:我从头开始修复了问题。很抱歉浪费你们所有的时间。如果你有这种倾向,请投票结束。
当通过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方法,因为它工作正常。谢谢你的帮助!
答案 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>";