jquery阻止函数表单执行,而ajax帖子正在进行中

时间:2012-03-30 03:28:17

标签: ajax jquery

我正在寻找一种可能性,以防止在ajax帖子正在进行时所有函数都被执行。例如:我有一个模态框,您可以使用简单的选项卡导航在两个表单之间切换。当用户提交其中一个表单时,数据将通过ajax发送。那么如何避免用户可以在表单之间切换,直到帖子结束。 有没有一种简单的方法可以做到这一点?

在ajax帖子中,有点像event.stopImmediatePropagation()

3 个答案:

答案 0 :(得分:3)

这样做的简单方法就是显示叠加层。占据整个屏幕且没有事件处理程序的元素。最受欢迎的选项似乎是半透明的div,带有一个加载指示器,让用户了解发生了什么,并且在请求完成之前,网站上什么都不会有效。

示例:http://jsfiddle.net/NezTc/11/

答案 1 :(得分:0)

我不确定是否存在其他方法,但我会为所有提交绑定一个监听器,并检查是否设置了proceedAjax请求的标志。这个标志将由我的ajax调用设置。

类似

$(function(){
    var onGoingAjaxRequest = false;

    $('form').submit(function() {
         if(!onGoingAjaxRequest) {
             return true;
         }
         return false;
    });
});

答案 2 :(得分:0)

我不确定你能否“切断”所有功能,直到给定的时间点,但我知道你可以随时:

  1. 使用if(isPosting) return;标题所有功能并添加

    var isPosting = true
    $.ajax({ [...], complete:function(r){ // this is the ajax function
        isPosting=false;  
    }});
    
  2. 或者,覆盖整个内容并添加一个大预加载器和Please wait...消息。