jQuery:如何使用.ajaxForm()链接.live()?

时间:2010-10-26 15:49:33

标签: javascript jquery

我有一个通过XHR引入的表单,因此在最初呈现DOM时它还没有准备好。目前我使用的是:

jQuery("[name='myform']").ajaxForm({ /* code here */ });

它在独立应用程序上运行良好。我正在嵌入它的应用程序是巨大的,我需要能够在myform可用于DOM之前将ajaxForm绑定到myform。无论如何我可以将.live()放在这里,以便在通过XHR引入时让jQuery监视它吗?

**编辑**

这是正在执行的实际代码。没有javascript错误。它只是提交整页提交而不是XHR更新。

 jQuery("[name='clip_form2']").live('submit', function(e) { 
      $(this).ajaxSubmit({
        target: '#form_quotes_highlights_part',

        beforeSerialize: function(form, options) {
          alert("In beforeSerialize...");
          if (validate_time_text_highlights()) {
            if ( $tabChanged ) {
              diff(form[0]);
              jQuery('form[name=clip_form2] input[type=submit]').attr('disabled', 'disabled').val("<%= t('labels.please_wait') %>");
              return true;
            }
            else {
              return false;
            }
          }
          return false;
        },

        success: function() {
          jQuery('#form_quotes_highlights_part').fadeIn('slow');
        },

        complete: function() {
          jQuery("#wizard").expose().close();
        }
      });
      $tabChanged = false;

      add_change_listener("form[name=clip_form2]");

      Tabs.validateCancel( $( "button[name=Cancel]", "form[name=clip_form2]" ) );

      $("#clip_quote").NobleCount('#quote_count');
      $("#clip_quote2").NobleCount('#quote2_count');
      $("#clip_attribution").NobleCount('#attribution_count');

      if ( <%= is_defined?( @permitted_clip_read_only ) && @permitted_clip_read_only %> ) {
        jQuery( 'form[name=clip_form2] input' ).attr( "disabled", true );
        jQuery( 'form[name=clip_form2] textarea' ).attr( "disabled", true );
      } 
      e.preventDefault();
  });

1 个答案:

答案 0 :(得分:1)

这样的事情可以解决问题:

jQuery("[name='myform']").live('submit', function(e) {
  $(this).ajaxSubmit(/* code here */);
  e.preventDefault();
});

ajaxSubmit()是魔术发生的地方(ajaxForm()只绑定提交处理程序),这里我们只是在监听submit事件并调用ajaxSubmit()然后