jquery post () не работает в динамической форме - PullRequest
1 голос
/ 08 февраля 2011

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

<script src="jquery-1.4.4.js" type="text/javascript"></script>

<script type="text/javascript">


  function init(items,userId) {  
    var inputdata = $("#qty_"+items).val();
    var userId = userId;
    alert(inputdata);
    $("#form_"+items).live("submit", function() {
      $.post("test_query.php", { value:inputdata, userId:userId }, 
        function(data){
          $('#results').empty();
          alert(data);
        });

       return false;

      });

    };

</script>


<?php

for($i=1; $i <2; $i ++)
{
echo "
    <div>
    <form id='form_".$i."'>
        <input id='qty_".$i."' type='text' autocomplete='OFF' />
        <input type=\"submit\" value=\"submit\" onclick=\"init(".$i.",2)\"/>
    </form>
    <script>

    </script>
    </div>
";
}
?>
</div>

ОБНОВЛЕНИЕ: забыл упомянуть, что идея не обновлять страницу при отправке.И формы имя / идентификатор генерируются динамически.

1 Ответ

0 голосов
/ 08 февраля 2011

Вы пытаетесь сделать то же самое - управлять обработчиком события submit для вашей формы - двумя способами, и это не совсем правильно.Вы генерируете форму HTML таким образом, что кнопка «submit» вызывает вашу процедуру «init» через обработчик «click».Что делает этот код?Он устанавливает другой обработчик событий для «отправки» событий в форму.Этот обработчик всегда будет использовать параметры, переданные в первый раз, когда он был вызван.

Вы должны либо придерживаться обработчика "onsubmit", либо (лучше) использовать свой инстинктjQuery "живой" или "делегировать" средства для настройки вашего обработчика.Тогда ваш код инициализации перейдет в обработчик «ready» jQuery, и вы полностью удалите «onsubmit»:

$(function() {
  $('body').delegate('form', 'submit', function() {
      $.post("test_query.php", { value: $(this).find('input:text').val(), userId: 2 }, 
        function(data){
            $('#results').empty();
            alert(data);
            $('#results').html(data);
         }
       );
   });

   return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...