我编写了一个函数来检查按钮是否被单击两次以及是否要测量两次单击之间的时间。它必须防止短时间内多次点击。
点击按钮:
$("#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();
更新此解决方案是我的解决方案和 Revish Patel 解决方案的混合
function disableTimeout(_this){
$(_this).prop('disabled','disabled');
setTimeout(function(){
$(_this).prop('disabled','');
}, 5000); // 5sec
}
$("#Save").click(function () {
alert('saved!');
disableTimeout(this);
});
关于javascript - 函数仅在调试器中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678223/