实际上,我在某些输入上有一个带有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