javascript - 函数仅在调试器中起作用

标签 javascript jquery

我编写了一个函数来检查按钮是否被单击两次以及是否要测量两次单击之间的时间。它必须防止短时间内多次点击。

点击按钮:

$("#Save").click(function () {
    dateTime1 = new Date().getTime();
    BtnId = this.id;
    showSaveDialog();
});

及测量功能:

ButtonWasTriggeredTwice: function () {
    var result = false;
    var currentTime = new Date().getTime();
    var time = currentTime - dateTime1;
    if (PreviousBtn === null) {
        result= false;
    } else {
        if (PreviousBtn === BtnId) {
            if (  time < 1500) {
                result = true;
            }
            else result = false;
        }
        else {
            result= false;
        }
    }
    PreviousBtn = BtnId;
    BtnId = null;
    return result;
}

BtnId 和 PreviosusBtn 是全局范围变量。

奇怪的是,当我在调试器中设置断点时,这个函数运行得很好。如果我关闭调试器功能,则每次单击按钮时都会阻止,无论单击之间的时间间隔是多少

最佳答案

您可以将此解决方案与取消绑定(bind)和超时一起使用,如下所示:

HTML

<input type="button" id="Save" value="save me" />

JS:

function saveEventButton(){
  $("#Save").click(function () {
    alert('saved!');
    $("#Save").unbind('click');
    setTimeout(function(){
            saveEventButton();
    }, 5000); // 5sec
  });
}

 saveEventButton();

This is the JSFiddle

更新此解决方案是我的解决方案和 Revish Patel 解决方案的混合

function disableTimeout(_this){
  $(_this).prop('disabled','disabled');
  setTimeout(function(){
      $(_this).prop('disabled','');
  }, 5000); // 5sec
}


 $("#Save").click(function () {
    alert('saved!');
    disableTimeout(this);
});

This is the JSfiddle

关于javascript - 函数仅在调试器中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678223/

相关文章:

javascript - 图像渲染值有时会更新,有时不会

javascript - 将鼠标悬停在(并离开)一个元素(或其子元素)上时运行一个 Action

javascript - 一段时间后图像的变化

javascript - 如何在单选按钮中显示传递给ajax的php值

javascript - 在 D3.js 中获取圆弧的 (x,y) 坐标

javascript - 当相应的图像滑入时,将 CSS 类添加到 span 标签

javascript - 如何检查 ul 中每个 li 文本的颜色?

javascript - 在用户关闭/更改移动浏览器选项卡之前检测

javascript - 加载 JavaScript 时遇到问题(无法加载图像)

javascript - jquery-selectBox 在平板电脑和移动设备上不支持