【问题标题】:javascript keydown combination activates with one key after first usejavascript keydown组合在第一次使用后用一个键激活
【发布时间】:2012-10-25 16:11:12
【问题描述】:

所以,我有一个 Keydown 组合可以在我的表单部分中的 div 之间移动,但是在第一次使用该组合后,我只能按 ALT 键(键码 18)并且它同时运行两个 if 语句在函数中,因此两次调用我的另一个函数。

它应该在输入 if 之前检查第二个 keydown 事件,或者至少我是这样认为的。

是否有一些我需要执行的 keydown 清除命令,或者重置对 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 中运行它,你可以看到只看控制台会发生什么。

我一定错过了什么,但不知道是什么。

【问题讨论】:

    标签: javascript html combinations keydown activation


    【解决方案1】:

    您需要监听onkeyup 并使用delete keys[key] 清除该键的状态。

    【讨论】:

    • 稍后我将尝试将您的建议与 jbabey 的函数混合,看看会发生什么。
    【解决方案2】:

    释放按键时需要清空keys数组:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 2017-02-26
      • 2016-01-14
      • 2019-05-13
      相关资源
      最近更新 更多