javascript keydown组合在首次使用后激活一个键

时间:2012-11-05 19:05:31

标签: javascript html5 combinations keydown activation

所以,我有一个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中运行它,你可以看到只是看着控制台会发生什么。

我必须遗漏一些东西,但不知道是什么。

2 个答案:

答案 0 :(得分:4)

您需要倾听onkeyup并使用delete keys[key]来清除该密钥的状态。

答案 1 :(得分:1)

释放密钥时需要清除keys数组:

document.onkeyup = function (evt) {
    var key = evt.keyCode;
    keys[key] = false;
};