0

したがって、フォームのセクション内のdiv間を移動するように機能するキーダウンの組み合わせがありますが、この組み合わせを初めて使用した後は、ALTキー(キーコード18)のみを押すことができ、関数内の両方のifステートメントが実行されます、したがって、他の関数を2回呼び出しています。

ifに入る前に、2番目のキーダウンイベントをチェックする必要があります。少なくとも、それが私が信じていたものです。

実行する必要のあるキーダウンのClearコマンド、またはキーダウンイベントのリッスンをリセットする方法はありますか?

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で実行していますが、コンソールを見ているだけで何が起こるかを確認できます。

私は何かが欠けているに違いないが、何がわからない。

4

2 に答える 2

4

そのキーの状態をリッスンしてクリアするためonkeyupに使用する必要があります。delete keys[key]

于 2012-11-05T19:07:56.273 に答える
1

keysキーが解放されたら、配列をクリアする必要があります。

document.onkeyup = function (evt) {
    var key = evt.keyCode;
    keys[key] = false;
};
于 2012-11-05T19:09:50.907 に答える