Две проблемы с функцией клонирования строк в форме - PullRequest
0 голосов
/ 15 мая 2011

Я использую простой метод клонирования строк в форме. Вы можете посмотреть веб-страницу здесь .

Это скрипт, который я использую для клонирования:

$(document).ready(function() {

            $(".add").click(function() {
                $("form > p:first-child").clone(true).insertBefore("form > p:last-child");
                return false;
            });

            $(".remove").click(function() {
                $(this).parent().remove();
            });

        });

и вот форма HTML:

    <form method="post" action="bookingengine.php">
        <p>
            <label>Full Name:</label> <input type="text" name="name" id="name">
            <label>Email:</label> <input type="text" name="email" id="email">
            <label>Telephone:</label> <input type="text" name="telephone" id="telephone">
            <span class="remove">Remove</span>
        </p>
        <p>
            <span class="add">Add fields</span><br /><br /><input type="submit" name="submit" id="submit" value="Submit" class="submit-button" />
        </p>

    </form>

У меня есть две проблемы, которые заставляют меня задуматься о том, является ли клонирование лучшим методом:

  1. Если пользователь уже ввел информацию в текстовые поля, они клонируются вместе с самими текстовыми полями, и я не хочу, чтобы это произошло. Я хотел бы добавить добавленные строки, чтобы они были пустыми.

  2. Информация должна быть отправлена ​​на адрес электронной почты с использованием PHP. Вот PHP:

$ EmailFrom = ""; $ EmailTo = ""; $ Subject = "Бронирование при отступлении"; $ Имя = Trim (полоски ($ _ POST ['name'])); $ Email = Обрезка (stripslashes ($ _ POST [ 'электронная почта'])); $ Телефон = Обрезка (stripslashes ($ _ POST [ 'телефон']));

$ validationOK = истина; если (! $ validationOK) {print ""; выход; }

$ Body = "Новые заказы были сделаны для отступления следующее: "; $ Body. = "\ П"; $ Body. = "\ N"; $ Body. = "Name: "; $ Body. = $ Name; $ Body. =" \ N "; $ Body. = "\ N"; $ Body. = "Email:"; $ Body. = $ Email; $ Body. = "\ N"; $ Body . = "\ n"; $ Body. = "Phone:"; $ Body . = $ Телефон; $ Body. = "\ N";

$ success = mail ($ EmailTo, $ Subject, $ Body, "From:");

if ($ success) {print ""; } else {print ""; }?>

Что я вижу, так это то, что в электронную почту добавляется только последняя строка формы, предположительно потому, что для каждого текстового поля нет уникальных имен или идентификаторов. Итак, еще раз мне интересно, подходит ли метод клонирования для этой задачи, и если да, то как я могу изменить свой код, чтобы включить все строки в электронное письмо.

Спасибо

Ник

1 Ответ

0 голосов
/ 15 мая 2011

Для работы с PHP вам необходимо преобразовать входные данные в «массивы», добавив 2-символьную последовательность «[]» в конец имени входного сигнала (см. № 3 для http://php.net/faq.html дляподробнее).

Что касается клонирования объектов со значениями, должно быть довольно просто очистить значения в новейших добавленных входных данных как последний шаг нажатия кнопки $ (". add")'обработчик.

    $(document).ready(function() {

        $(".add").click(function() {
            var x = $("form > p:first-child").clone(true).insertBefore("form > p:last-child");
            x.find('input').each(function() { this.value = ''; });
            return false;
        });

        $(".remove").click(function() {
            $(this).parent().remove();
        });

    });
...