如何在应用表单函数之前等待表单加载?

时间:2011-02-20 20:02:03

标签: javascript jquery forms load

我的网站上有一个结帐按钮,用于动态加载表单,用户可以在其中填写他/她的个人详细信息。 表单的ID为#order。加载表单后,必须从jquery-form插件调用.submit函数。

当我第一次做这个时它没有用,所以我把我的最小调试技巧用于(放置警报,我不知道最好的方法;-))。突然,当我在表单加载和.submit调用之间发出警报时,它会起作用。

我认为在调用.submit之前,它与表单没有完全加载有关。但经过快速搜索后,我发现.html函数是同步的,所以任何代码 在html之后肯定会发生.html()调用之后执行 已设定。

有人可以帮我解决这个问题吗?

$('.checkout').live('click', function(event) {
  event.preventDefault();                       
  $.get('/gva/templates/gva/form.html', function(data){
    $('#blog').html(data);
  });
  alert('with this alert it works, without it doesn't'); 

  var options = { 
    target:        '#response',   
    beforeSubmit:  validate,  
    success:       showResponse  
  };

  $('#order').submit(function() { 
    $(this).ajaxSubmit(options); 
    return false; 
  });
});

1 个答案:

答案 0 :(得分:2)

$('.checkout').live('click', function(event) {
  event.preventDefault();                       
  $.get('/gva/templates/gva/form.html', function(data){
    $('#blog').html(data);

    var options = { 
      target:        '#response',   
      beforeSubmit:  validate,  
      success:       showResponse  
    };

    $('#order').submit(function() { 
      $(this).ajaxSubmit(options); 
      return false; 
    });
  });
});

alert导致延迟,确保在代码的下一位触发时DOM已更新。我把它们放在适当的处理程序中,以便它们在适当的时间点火。