javascript - 避免多次点击一个 div

标签 javascript jquery ajax

这可能很简单,但我仍然没有找到解决方案,我想避免在完成 ajax 调用之前多次单击按钮。

这是我尝试过的:

<button id="btn_pay"></button>

$("#btn_pay").click( function() {
    $('#btn_pay').prop('disabled', true);
    Stripe.card.createToken(form, stripeResponseHandler);
});

           var stripeResponseHandler = function(status, response) {
            $.ajax({
                type: "POST",
                success: function(data){
                   alert("success");
                },complete:function(){
                    //we re-enable the button
                    $('#btn_pay').prop('disabled', false);
                }
            });

问题: 如果我多次单击该按钮,会出现许多警报,就像该按钮仍处于事件状态一样,并且会完成许多 ajax 调用,而不是一次调用 jsut 1..

有什么想法吗?

最佳答案

你可以用一个简单的变量来控制它:

    <button id="btn_pay"></button>

    var disabled = false; // global var to control button state

    $("#btn_pay").click( function() {
        if (disabled) {
            return; 
        }

        Stripe.card.createToken(form, stripeResponseHandler);
        disabled = true; // button is now blocked
    });

    var stripeResponseHandler = function(status, response) {
          $.ajax({
                    type: "POST",
                    success: function(data){
                       disabled = false; // release button lock
                       alert("success");
                    },complete:function(){
                       disabled = false; // release button lock
                    },fail: function(){
                       disabled = false; // when fail, you need to release the lock too
                    }
            });
      }

具有事件处理程序的其他解决方案也可能适用于您,但这是实现此功能的更简单方法。

关于javascript - 避免多次点击一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32864401/

相关文章:

javascript - Firebase - 如何按键从对象列表中获取对象

javascript - JQuery - 使用计时器循环一个类

javascript - Bootstrap 4 崩溃在一半停止然后打开时无法顺利工作

javascript - 使用 XHR 预缓存资源不符合预期

javascript - 我可以避免在路由更改时重新渲染父路由处理程序组件吗?

javascript - PHP 将文件中的图像添加到产品页面

javascript - AJAX 调用 [object%20Object] 而不是 URL (Symfony)

javascript - Angular ajax 发布到 FormSpree.io

javascript - 如何正确地将 HTTP 错误代码传递给错误处理中间件?

javascript - 导入 Bootstrap 样式表时图像消失