2014-04-01 84 views
0

我遇到了'事件冒泡'的問題,所以我使用'.on'事件來阻止這一點,但現在當我嘗試提交表單時,它不會工作,直到您點擊提交按鈕兩次。即第一次點擊沒有任何反應。表單提交不起作用第一次點擊

我已經嘗試了一切,我可以在網上找到。

有沒有人有任何想法如何解決這個問題?

$(document).on('submit', '.status_update_shipped', function(e) { 
    $('.status_update_shipped').ajaxForm({ 
     dataType: 'json', 
     success: function(data) { 
      if (data.success) { 
       $('#order-alert').text('Order #'+data.entry_id+' set as shipped (moved to past orders)').fadeIn(); 
       setTimeout(function(){ 
        $('#order-alert').fadeOut().text(''); 
       }, 5000); 
       var wrapper = '.recent-order-item-'+data.entry_id; 
       $(wrapper).hide(); 
      } 
     } 
    }); 
    e.preventDefault(); 
}); 
+0

:e.preventDefault(); ?? – Hackerman

+0

@RobertRozas如果我刪除它,它會轉發HTTP請求而不是AJAX – user2889310

+0

@ A.Wolff感謝您的回覆。如果我不嵌套它,它只是使用http請求...不知道爲什麼。 – user2889310

回答

3

調用.ajaxForm()初始化the Forms plugin,不進行實際的提交。你不需要將它封裝在事件處理程序中,因爲插件會自動處理所有事情......捕獲點擊,阻止默認提交,並執行ajax ......否則,使用插件是沒有意義的這個。

(你需要點擊兩次,因爲第一次點擊只初始化插件。)

繼在文檔的例子:http://malsup.com/jquery/form/

$(document).ready(function() { 

    $('.status_update_shipped').ajaxForm({ 
     // your options 
    }); 

}); 

另外,不要忘了包括包含jQuery之後的Forms插件。

<script src="http://malsup.github.com/jquery.form.js"></script> 
0

這個答案是如果刪除這一行用 「ajaxSubmit會」 而不是 「給ajaxForm」

http://malsup.com/jquery/form/#options-object

$(document).on('submit', '.status_update_shipped', function(e) { 
    $('.status_update_shipped').ajaxSubmit({ 
     dataType: 'json', 
     success: function(data) { 
      if (data.success) { 
       $('#order-alert').text('Order #'+data.entry_id+' set as shipped (moved to past orders)').fadeIn(); 
       setTimeout(function(){ 
        $('#order-alert').fadeOut().text(''); 
       }, 5000); 
       var wrapper = '.recent-order-item-'+data.entry_id; 
       $(wrapper).hide(); 
      } 
     } 
    }); 

    e.preventDefault(); 
    return false; 
}); 
相關問題