2012-07-24 78 views
2

實際上,我在某些輸入上有一個帶有JQuery focusOut事件的窗體。 但是,如果重點是其中的一個輸入和用戶想提交。在執行提交事件之前,我需要等待focusOut事件的結束。等待一個JQuery事件的結束來執行另一個

有人知道該怎麼做嗎?

+0

可以顯示一些代碼,你有什麼到目前爲止已經試過?或使一個[小提琴](http://jsfiddle.net/) – 2012-07-24 12:37:42

回答

3

使用一對標誌不應該太難。如果你想撐起表單提交的東西完成之前,只是:

  1. 設置標誌(inProgress或其他)當您啓動的事情要等待

  2. 掛鉤提交事件

  3. 如果inProgress標誌設置,取消提交事件,並設置一個標記,形式提交需求(submitPending或其他)

  4. 當其他的事情完成,清除inProgress標誌,如果submitPending設置,提交表單

重要的是,你知道的東西完成。如果你不知道,當然#4會開火,你不想取消#3中的提交。

因此,舉例來說,假設#theField是外地和#theForm的形式,它會是這個樣子:

(function() { 
    var inProgress = false, 
     submitPending = false; 

    // #2 
    $("#theForm").submit(function() { 
     if (inProgress) { 
      // #3 
      submitPending = true; 
      return false; 
     } 
    }); 
    $("#theField").on("focusOut", function() { 
     inProgress = true; 
     startThingThatTakesTimeLikeAnimationOrAjax(function() { 
      // This is the completion callback of the thing that takes time 

      // #4 

      // No longer in progress 
      inProgress = false; 

      // Submit if one is pending 
      if (submitPending) { 
       $("#theForm").submit(); 
      } 
     }); 
    }); 
})(); 
+0

有點棘手,但它的作品謝謝! – kschaeffler 2012-07-24 13:31:22

+0

@kschaeffler:不客氣,很高興幫助。 – 2012-07-24 13:32:58

相關問題