仅在按下键时执行一次

时间:2014-04-16 16:12:03

标签: javascript jquery key

我有以下代码:

onkeyup = function(e) {
                if (e.keyCode == 77) { // the 'm' key
           setTimeout(function () {
            ... // my set timeout stuff
            }

问题是每次按m键,我的setTimeout都会重新执行。 如果我按&按住 一次,执行setTimeout。 (再多一次,什么都不应该执行)。

谢谢,我希望应该很简单。

1 个答案:

答案 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。