實際上,我在某些輸入上有一個帶有JQuery focusOut事件的窗體。 但是,如果重點是其中的一個輸入和用戶想提交。在執行提交事件之前,我需要等待focusOut事件的結束。等待一個JQuery事件的結束來執行另一個
有人知道該怎麼做嗎?
實際上,我在某些輸入上有一個帶有JQuery focusOut事件的窗體。 但是,如果重點是其中的一個輸入和用戶想提交。在執行提交事件之前,我需要等待focusOut事件的結束。等待一個JQuery事件的結束來執行另一個
有人知道該怎麼做嗎?
使用一對標誌不應該太難。如果你想撐起表單提交的東西完成之前,只是:
設置標誌(inProgress
或其他)當您啓動的事情要等待
掛鉤提交事件
如果inProgress
標誌設置,取消提交事件,並設置一個標記,形式提交需求(submitPending
或其他)
當其他的事情完成,清除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();
}
});
});
})();
有點棘手,但它的作品謝謝! – kschaeffler 2012-07-24 13:31:22
@kschaeffler:不客氣,很高興幫助。 – 2012-07-24 13:32:58
可以顯示一些代碼,你有什麼到目前爲止已經試過?或使一個[小提琴](http://jsfiddle.net/) – 2012-07-24 12:37:42