函数只能在调试器中工作

Function works only in debugger

本文关键字:工作 调试器 函数      更新时间:2023-09-26

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

点击按钮:

$("#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和PreviousBtn是全局范围变量。

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

您可以使用带有解除绑定和超时的解决方案,如下所示:

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();

这是JSFiddle

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

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

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

这是JSfiddle

您还可以在执行第一次单击时禁用按钮。

$(document).ready(function () {
  $("#Save").click(function(){
     $('#Save').prop('disabled','disabled');
     // Perform your button click operation
  });
});