实际上我在一些输入上有一个带有JQuery focusOut事件的表单。 但是,如果重点是其中一个输入并且用户想要提交。我需要在执行submit事件之前等待focusOut事件的结束。
有人知道怎么做吗?
答案 0 :(得分:3)
使用一对旗帜不应该太难。如果您希望在完成某项操作之前暂停表单提交,只需:
当你开始想要等待的东西时设置一个标志(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();
}
});
});
})();