禁用双击jQuery AJAX事件

时间:2017-06-30 04:42:59

标签: jquery ajax double-click

我有一个分页按钮,它运行Ajax函数以在页面上提取新结果。一切都运行正常,唯一的问题是,如果我双击按钮,我会将结果加倍,因为它正在进行两次相同的调用。

我知道这件事有很多解决方法,但似乎没有任何工作可以完全发挥作用。

现在我使用var作为旗帜......

var isPaging = 0;
$('.container').on('click', '.bh-pagination-button', function(){

    if (!isPaging) {

        isPaging = 1;

        callBehanceProjectsList();

        isPaging = 0;
    }
});

如果我有点慢,似乎有效,但如果我快速点击两次或三次,它会进行第n次通话,所有这些都是相同的。

然后我看到还有其他解决方案:

one();
unbind();
die();

etc...

那些实际上可以工作,问题是一旦我禁用了click事件,我就无法重新启用它,并且我需要在分页结束后多次点击。

你有什么想法吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

$('.container').on('click', '.bh-pagination-button', function() {
  $(this).prop('disabled', true);
  callBehanceProjectsList();
  $(this).prop('disabled', false);
});

这样,按钮将在分页开始之前被禁用,并在分页结束后自动启用。这样可以防止多次点击按钮,因此也可以消除对特定变量的需求。

答案 1 :(得分:0)

我认为你必须使用Jquery.BlockUI.Js。

以下是该示例代码,

$(document).ready(function() {

    $("#Button3").click(function() {
    console.log('d');
        $.blockUI();
        setTimeout(function() {
            $.unblockUI({
                onUnblock: function() {
                //Write your unblock logic
                    alert('onUnblock');
                }
            });
        }, 2000);
    });
});

你甚至可以在收到来自ajax电话的回复后解锁它,这对你的情况来说似乎是一个更好的解决方案。

工作小提琴:http://jsfiddle.net/nwjsgxrp/

答案 2 :(得分:0)

我也遇到了类似的问题。我的解决方法是_

   $('#acceptButton').attr("disabled", true);

acceptButton是按钮ID。