所以,我有一个Keydown组合工作在我的表单的一部分中的div之间移动,但在第一次使用组合后,我只能按ALT键(键码18)并且它运行两个if语句在函数中,因此两次调用我的其他函数。
应该在输入if之前检查第二次keydown事件,或者至少是我认为的那样。
我需要做一些关于keydown的Clear命令,还是一种重置keydown事件监听的方法?
var keys = [];
document.onkeydown = function(evt){
var key = evt.keyCode;
keys[key] = true;
if(keys[18] && keys[78]){
NewFocus('#Notes');
console.log("Notes");
}
if(keys[18] && keys[67]){
NewFocus('#Callers');
console.log("Callers");
}
return false;
}
function NewFocus(newNav)
{
$('.navActive').hide().removeClass('navActive');
console.log("made it to New Focus event.");
var id = $(newNav);
console.log("This is the id " + $(id));
$(id).show().addClass('navActive');
return false;;
}
顺便说一下,我在Safari和Chrome中运行它,你可以看到只是看着控制台会发生什么。
我必须遗漏一些东西,但不知道是什么。
答案 0 :(得分:4)
您需要倾听onkeyup
并使用delete keys[key]
来清除该密钥的状态。
答案 1 :(得分:1)
释放密钥时需要清除keys
数组:
document.onkeyup = function (evt) {
var key = evt.keyCode;
keys[key] = false;
};