Javascript禁用密钥实例并将其启用

时间:2017-06-26 16:55:21

标签: javascript jquery

我对keyup和keydown功能非常好奇。

我想禁用2秒钟的密钥然后启用它们。 我已设置了一个功能setTimeout,以确保在此功能continueExecution下启用它。

问题是,我试图弄清楚如何禁用它。 我试过了e.preventDefault();
尝试发送假回来仍然没有运气。

我有什么遗失的吗?

事件处理程序:

var keysDown = {},
ignore = false,tId;

addEventListener("keydown", function(e) {
  if (ignore) return false;
  keysDown[e.keyCode] = true;
}, false);

addEventListener("keyup", function(e) {
  if (ignore) return false;
  delete keysDown[e.keyCode];
}, false);

功能:

function doStuff() {
  hero.y = 0;   
  ignore=true;
  tId = setTimeout(function() { ignore=false; continueExecution() }, 2000) //wait two seconds before continuing

}



function continueExecution()
{   

    hero.y = -281;
}

3 个答案:

答案 0 :(得分:0)

尝试设置标记

// Handle keyboard controls
var keysDown = {},
  ignore = false,tId;

addEventListener("keydown", function(e) {
  if (ignore) return false;
  keysDown[e.keyCode] = true;
}, false);

addEventListener("keyup", function(e) {
  if (ignore) return false;
  delete keysDown[e.keyCode];
}, false);


function doStuff() {
  ignore = true;
  tId = setTimeout(function() { ignore=false; continueExecution() }, 2000) //wait two seconds before continuing

}

答案 1 :(得分:0)

如果您使用jquery,您可以编写如下代码:

$("your_elem").on("keyup",function(){
     $(this).off("keyup")
});

否则,如果您想要将其退回,则可以通过替换关闭

答案 2 :(得分:0)

您的eventListener函数不能是匿名的:

function keyDown(e) {
    keysDown[e.keyCode] = true;
}
addEventListener("keydown",keyDown,false);

function keyUp (e) {
    delete keysDown[e.keyCode];
}
addEventListener("keyup",keyUp,false);

现在您可以删除监听器:

removeEventListener("keyup",keyUp,false);

总数:

function keyDown(e) {
    keysDown[e.keyCode] = true;
}
function keyUp (e) {
    delete keysDown[e.keyCode];
}

function setEvents(){
 addEventListener("keyup",keyUp,false);
 addEventListener("keydown",keyDown,false);
}
setEvents()
function yieldEvents(time){
  removeEventListener("keyup",keyUp,false);
  removeEventListener("keydown",keyDown,false);
  setTimeout(setEvents,time);
}
yieldEvents(2000);//e.g.