2011-03-04 47 views
2

我有一個多次觸發的form.submit。第一次,沒關係。在我收到回覆後,如果再次點擊提交按鈕,它會啓動兩次。然後三次。似乎每次響應回來時,下次單擊該按鈕時,提交都會觸發額外的時間。form.submit多次觸發,每次響應後多出一次

RetrievePassword = function() { 
    var $popup = $("#fancybox-outer"); 
    var form = $popup.find("form"); 
    form.submit(function (e) { 
     var data = form.serialize(); 
     var url = form.attr('action'); 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: data, 
      dataType: "json", 
      success: function (response) { 
       if (response.Success) { 
        $.fancybox.close(); 
       } 

       alert(response.Message); 
      }, 
      error: function (xhr, status, error) { 
       alert(xhr.statusText); 
      } 
     }); 

     e.cancelBubble = true; 
     if (e.stopPropagation) e.stopPropagation(); 
     return false; 
    }); 

}; 

我什至不知道如何調試這一點。任何意見表示讚賞...

+0

'e.cancelBubble = true;如果(e.stopPagagation)e.stopPropagation();返回false;'是矯枉過正。因爲你正在使用jQuery來執行'e.preventDefault();''是你所需要的('和'e.stopPropagation();''如果你需要防止事件冒泡 - 但通常不需要) – ThiefMaster 2011-03-04 23:38:07

回答

1

我假設你打電話RetrievePassword()多次。每當你打電話給它時,另一個onsubmit處理程序將被註冊。

解決方案是隻註冊處理程序一次。

+0

你是對的,我也有從輸入按鈕調用函數: Prabhu 2011-03-04 23:54:06