2011-02-07 45 views
1

我的用户界面包含一个组合框,用于显示表单的类型。然后使用ajax提交表单。回调显示整个表单和其他信息。问题是第一次提交工作,但第二次提交没有考虑到表单字段中所做的更改。jQuery如何将事件附加到新创建的对象

  • 在列表中选择Form1中
  • Form1中显示有空白字段
  • 用户填写表格并提交
  • Form1中与来自用户的信息以及其他信息再次显示
  • 用户更改字段值并提交,但提交旧数据。

我的当前的jQuery(I使用jQuery Form plugin):

$(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处理不好部分形式。

我可以做更好的工作,将事件附加到新创建的表单使用绑定,但我不知道我应该把代码放在哪里。该表单使用JSP显示,并且我尝试将

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

之后的JSP代码但脚本未执行。

编辑该脚本未执行,因为我的脚本是错误的:缺少);

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

现在,它的工作,但我仍然不知道为什么live结合使用表单中的旧数据。

回答

0

当我要绑定到动态创建的对象我使用的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

+0

有什么用`live`区别? – Sydney 2011-02-07 17:37:45

相关问题