我有以下代码:
onkeyup = function(e) {
if (e.keyCode == 77) { // the 'm' key
setTimeout(function () {
... // my set timeout stuff
}
问题是每次按m键,我的setTimeout都会重新执行。 如果我按&按住 一次,执行setTimeout。 (再多一次,什么都不应该执行)。
谢谢,我希望应该很简单。
答案 0 :(得分:1)
存储一个布尔变量,如下所示:
var hasKeyBeenPressed = new Boolean(0);
在setTimeout函数中,将此值更改为true。在对条形码进行条件检查时,检查并确保setTimeout函数仅在此布尔值设置为false时执行。
var hasKeyBeenPressed = new Boolean(0);
onkeyup = function(e) {
if (e.keyCode == 77 && hasKeyBeenPressed == 0) { // the 'm' key
setTimeout(function () {
hasKeyBeenPressed = 1;
... // my set timeout stuff
}
}
}
在这些情况下,您的功能只会执行一次。
如果您需要一些持久性,请考虑使用sessionStorage。