jQuery Как прикрепить событие к вновь созданному объекту - PullRequest
1 голос
/ 07 февраля 2011

Мой пользовательский интерфейс состоит из поля со списком, в котором отображается тип формы.Затем форма отправляется с использованием ajax.Обратный вызов снова отображает всю форму и другую информацию.Проблема заключается в том, что первая отправка работает, но вторая отправка не учитывает изменения, внесенные в поле формы.

  • Выберите форму 1 в списке
  • Форма 1 отображается спустое поле
  • Пользователь заполняет форму и отправляет
  • Форма 1 снова отображается с информацией от пользователя и другой информацией
  • Пользователь изменяет значение поля и отправляет НОстарые данные передаются.

Мой текущий jQuery (я использую плагин jQuery Form ):

$(document).ready(function() {
    // do stuff when DOM is ready
    var testCaseList = $('#testCaseId');
    testCaseList.live('change', function() {
       $.ajax({
           url: 'populateSteps.htm',
           type: 'GET',
           data: 'testCaseId=' + $(this).val(),
           success: function(data){
             $('#formContainer').html(data);
             var formId = $('#testCaseForm');
             var validateButton = $('#validateButton');
             validateButton.live('click', function() {
                 // prepare Options Object
                 var options = {
                     url: 'validateTestCase.htm',
                     success:    function(data) {
                         $('#formContainer').html(data);
                     }
                 };
                 // pass options to ajaxForm
                 alert(formId.formSerialize());
                 formId.ajaxSubmit(options);
             });
           }
       });
    });
  });

В основном после изменения значения в поле со списком, форма отображается и событие кнопки прикрепляется к кнопке формы.Клик только отправляет форму.

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

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

   HTML/JSP code ...    <script type="text/javascript">
    $(document).ready(function() {
    // Attach the event to the form
    }    </script>

после кода JSP, но сценарий не выполняется.

EDIT Сценарий невыполнено из-за неправильного сценария: отсутствует);

<script type="text/javascript">
        $(document).ready(function() {
        // Attach the event to the form
        });    
</script>

Сейчас он работает, но мне все еще интересно, почему привязка live использует старые данные из формы.

1 Ответ

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

Когда я хочу привязать события к динамически создаваемым объектам, я использую плагин LiveQuery следующим образом:

   $('.zoom').livequery('click' , function(e){
      x = Math.round( e.pageX - $(this).offset().left);
      y = Math.round(e.pageY - $(this).offset().top);
      sendRequest(71609);
   });

LiveQuery: http://plugins.jquery.com/project/livequery

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