Добавление элемента формы динамически с помощью javascript – не отправление

Изменить: я исправил проблему, просто начиная с нуля. Жаль потратить время. Пожалуйста, проголосуйте, чтобы закрыть, если вы так наклонены.

У меня возникают проблемы с получением фактических данных в форме для отправки, когда поля ввода добавляются через 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 должен быть вашим идентификатором формы.