Элемент формы, добавленный с помощью jQuery, не отправляется на POST - PullRequest
3 голосов
/ 21 июля 2010

У меня есть zend_form, где я позволяю пользователю динамически добавлять элементы формы. Элементы добавляются динамически с помощью jQuery: что-то вроде ...

$(function(){
  $('#more_answers').click(function(){
    var elemNum = $('.dummy-element').size();

    $("<dd class='dummy-element' id='dummyanswer_"+elemNum+"-element'><input type='text' value='' id='dummyanswer_"+elemNum+"' name='dummyanswer_"+elemNum+"'></dd>").insertBefore('#more_answers-element');

    return false;
  });
});

Элемент добавлен правильно - в тегах. Когда я отправляю, добавленный элемент не отправляется. Я проверил в представлении Net в Firebug, и переменная действительно не передается вообще.

В чем может быть проблема? Будет ли это как-то связано с zend_form? Раньше я добавлял элементы в Zend_Forms, используя сырой JavaScript, и он работал просто отлично.

Есть мысли?

Спасибо, я действительно ценю это!

Дополнительная разметка для элементов формы по запросу:

<dd class="dummy-element" id="dummyanswer_2-element">
  <input type="text" value="" id="dummyanswer_2" name="dummyanswer_2">
</dd> <!-- this element was NOT added using jquery -->
<dd id="dummyanswer_3-element" class="dummy-element">
  <input type="text" name="dummyanswer_3" id="dummyanswer_3" value="">
</dd> <!-- this element was added using jquery -->
<dd id="more_answers-element">
  <input width="170px" height="30px" type="image" style="" class="addDummyAnswer" src="/images/add_more_dummy_answers_button_370X60px.png" id="more_answers" name="more_answers">
</dd>

Ответы [ 3 ]

4 голосов
/ 21 июля 2010

Однажды у меня была похожая проблема. Если форма находится внутри таблицы, добавленный элемент (вход) будет дочерним элементом ячейки таблицы, а не дочерним элементом формы и не будет «связан» с формой как одно из полей формы, даже если теги таблицы находятся внутри тегов формы.

Если вы добавите поле ввода непосредственно как дочерний элемент узла DOM формы, то оно будет «связано» с формой как одно из ее полей и должно быть отправлено в обычном режиме.

Большой вопрос в том, можно ли каким-то образом «связать» добавленный элемент ввода с формой, когда этот элемент динамически добавляется в DOM как дочерний элемент узла, не являющегося формой? Я так и не смог найти решение.

У меня была эта проблема при работе с расширением Firefox, поэтому такое поведение наблюдалось в Firefox. Не уверен, как другие браузеры справляются с ситуацией. Может быть, вы испытываете нечто подобное.

0 голосов
/ 22 марта 2013

Я попал сюда при поиске в StackOverflow аналогичного случая, который был закодирован, может быть, слишком давно. Так что проблема, вероятно, в том, что неправильно сформированный HTML, кто-то поместил тег в тег

0 голосов
/ 21 июля 2010

Хорошо, решено - я искал источник в Firefox, и все действительно было правильно отрисовано.Тем не менее, я открыл то же самое в веб-разработчике, и тег формы был скрыт.это выглядело примерно так:

             <dl class = "zend_form">
                    <!---- all the elements -->
             </dl>
          <table>
               <form....></form> <!-- everything hidden -->   
         </table>

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

в теге таблицы, поэтому
...