将动态创建的表单字段传递给PHP

时间:2012-01-17 21:57:04

标签: php javascript html forms

我正在尝试将动态创建的表单字段传递给php脚本,这让我头疼不已。

我过去曾多次这样做过,我无法弄清楚我在这里做错了什么。

下面是一个正在发生的事情的例子:

简要说明:我有一个带有textarea的表单,有一个名为“Add More”的按钮,点击后,会通过javascript生成一个新的textarea。 textareas值被推入名为“comments”的数组中。当我尝试在我的php脚本中循环遍历这个数组时,它只给我第一个项目,而不是动态创建的项目。

HTML

<form action="" method="post" enctype="multipart/form-data" accept-charset="utf-8">
<textarea name="comments[]"></textarea>
<a href="javascript: return null;" class="add-more">Add More</a>
</form>

JS

$(".add-more").click(function(){ 

       var new_field = '<textarea name="comments[]"></textarea>';
       $(this).before(new_field);

}); 

PHP - 这就是问题所在,当我尝试遍历comments []数组时,它只给我第一个,并且不会带来任何动态生成的。

<?php

$comments = $_POST['comments'];

$commentString = "";
foreach($comments as $value) {
$commentString .= $value;
}

?>

所以如上所述,如果我使用“Add More”按钮创建5个textareas,在每个文本中输入一些文本,然后提交表单,动态创建的字段都不会发送到php。

有人可以帮忙吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

<form action="" method="post" />

应该是:

<form action="" method="post">

答案 1 :(得分:0)

另一个答案是正确的,但您也需要关闭表单。您的代码缺少结束“&gt;”同样。

<form action="" method="post" >
<textarea name="comments[]"></textarea>
<a href="javascript: return null;" class="add-more">Add More</a>
</form>

答案 2 :(得分:0)

此外,JS中的类名与HTML中的类名不匹配。

这一切都在一起工作:

<html>

<head>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

</head>

<body>

<form action="" method="post">

    <textarea name="comments[]"></textarea>

    <a href="javascript: return null;" class="add-more">Add More</a>

    <input type="submit" />

</form>

<script>
    $(".add-more").click(function(){ 
           var new_field = '<textarea name="comments[]"></textarea>';
           $(this).before(new_field);

    });
</script>

<?php

$comments = $_POST['comments'];

$commentString = "";

foreach($comments as $value) {
    $commentString .= $value;
}

echo $commentString;

?>

</body>

</html>