Передача динамически созданных полей формы в PHP - PullRequest
1 голос
/ 18 января 2012

Я пытаюсь передать динамически созданные поля формы в скрипт php, и это вызывает у меня сильную головную боль.

Я делал это в прошлом много раз, и я не могу понять, чтоя делаю не так здесь.

Ниже приведен пример того, что происходит:

Краткое объяснение: у меня есть форма с текстовой областью, есть кнопка с именем «Добавить еще»,при нажатии новая текстовая область создается с помощью JavaScript.Значения текстовых полей помещаются в массив с именем «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;
}

?>

Итак, с учетом вышеизложенного, если я создаю 5 текстовых областей с помощью кнопки «Добавить еще», введите в каждый из них некоторый текст, а затем отправьте форму, ни одно из динамически созданных полей не будет отправлено в php.

Кто-нибудь может помочь?

Спасибо !!

Ответы [ 4 ]

4 голосов
/ 18 января 2012

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

должно быть:

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

1 голос
/ 18 января 2012

Это было решено.

Проблема была вызвана закрытой формой выше той, с которой у меня были проблемы.

Спасибо за ответы всем!

0 голосов
/ 18 января 2012

Кроме того, имя класса в вашем 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 голосов
/ 18 января 2012

Другой ответ правильный, но вам также нужно будет закрыть форму.В вашем коде также отсутствует закрывающее ">".

<form action="" method="post" >
<textarea name="comments[]"></textarea>
<a href="javascript: return null;" class="add-more">Add More</a>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...