2012-01-17 3 views
1

動的に作成されたフォームフィールドをPHPスクリプトに渡そうとしています。動的に作成されたフォームフィールドをPHPに渡す

これまで何度もやったことがありますが、ここで何が間違っているのか分かりません。

簡単な説明:私は、テキストエリアのフォームを持っている、javascriptを経由して、クリックすると、新しいテキストエリアが生成され、「詳細を追加」というボタンがある

以下は何が起こっているかの例です。テキストエリアの値は、「comments」という名前の配列にプッシュされます。私は、私のPHPスクリプト内でこの配列をループしようとすると、それは私に最初の項目を与え、動的に作成されたものは与えません。

<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

HTML - これは私がコメント[]配列をループしようとすると問題が、ある場合、それは私だけ最初のものを与えており、動的に生成されたもののどれかを持ってこない。私は「もっと追加」ボタン、入力各1にいくつかのテキストを使用して5つのテキストエリアを作成し、フォームを送信した場合ので、上記と

<?php 

$comments = $_POST['comments']; 

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

?> 

は、動的に作成されたフィールドのいずれもが、PHPに至るまで送っていません。

誰でも手助けできますか?

ありがとうございます!

+0

フォームはどのように提出していますか? –

+0

私は、フォーム内のページのURLを使用してフォームを送信しています。ファイル内に、ポスト変数をキャッチするPHPスクリプトがあります。上記の一部を見ることができます。 – user995542

答えて

1

は、ここでは、すべて一緒に働いています。

問題は、私が問題を抱えていたものの上に閉じられていないフォームが原因です。

返信いただきありがとうございます!

+0

答えを正しいとマークし、人々は返信を止めます – Kristian

+0

@クリスチャンあなた自身の質問であなた自身の答えを正しいものにするためのタイムブロックがあります。 (メモリから48時間) – Skuld

4

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

次のようになります。

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

0

他の答えが正しいですが、あなたはまた、同様に、フォームを閉じる必要があります。あなたのコードには「>」という閉じ方もありませんでした。

<form action="" method="post" > 
<textarea name="comments[]"></textarea> 
<a href="javascript: return null;" class="add-more">Add More</a> 
</form> 
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> 
+0

返事をいただきありがとうございます。言及されたことはすべて実際に私のコードで正しいです。私は質問を投稿したとき急いでいた。 質問は実際の構文で修正されました。 – user995542

関連する問題