Изменить: я исправил проблему, просто начиная с нуля. Жаль потратить время. Пожалуйста, проголосуйте, чтобы закрыть, если вы так наклонены.
У меня возникают проблемы с получением фактических данных в форме для отправки, когда поля ввода добавляются через javascript. Поля отображаются в нужном месте, но когда я делаю var_dump (имя поля) на стороне сервера, ничего не появляется. Проверка с помощью 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. Нужно ли добавлять элемент в качестве дочернего элемента в элемент формы, чтобы отправить его?
Я видел, что поля ввода формы ввода добавлены с помощью javascript, где я получил идею добавления данных специально к форме child, но для этого потребуется некоторая реструктуризация моего CSS. Итак, я надеюсь, что это что-то простое, что я могу сделать в приведенном выше коде.
Заранее спасибо!
edit: исправлено опечатки, но все равно не работает. Я решил использовать библиотечный бесплатный JS-метод, обсуждаемый в ссылке SO выше, поскольку это работает нормально. Спасибо за помощь, хотя!
В вашем коде было много опечаток. Например, вы не закрыли тег селектора для jquery.
Вы помещаете $("#add_fields".append( htm );
Должно быть $("#add_fields").append( htm );
Обратите внимание на недостающие скобки.
Но я считаю, что ваша проблема заключается главным образом в том, как вы пытаетесь получить доступ к значениям через PHP. Я просто помещаю ваш источник в тестовую страницу, и все это работает, если вы правильно обращаетесь к значениям.
<?php foreach ($_REQUEST['txt'] as $printme) echo $printme."<br/>"; ?>
Вышеуказанный источник работает нормально.
в вашем коде есть 2 опечатки: htm вместо html
и add_fields / add_files
Это ваш фактический код?
Если это так, вы не закрыли тег ввода и тег p. Поэтому, возможно, форма игнорирует их.
var htm = "<p id='row" + id + "'><input type='text' size='20' name='txt[]' id='txt" + id + "' /></p>";
Когда вы добавляете / добавляете или используете innerHtml
чтобы поместить поля формы в html, тогда когда-нибудь он выведет его за пределы формы, вы увидите его как часть формы, но внутренне это не так.
Чтобы решить эту проблему, вам нужно добавить атрибут form
с form=myForm
типа form=myForm
, а myForm должен быть вашим идентификатором формы.