1

Javascript を使用してユーザーからキーを取得し、それを Javascript オブジェクトに保存しようとしています。

つまり、 を押すAと、myJSON[65] に 1 が追加されます。
次のコードは完全に機能しますが、ユーザーがキーを長時間押すと、複数のキーが押されたものとして検出されます。私はそれを望んでいません。これを行うより良い方法はありますか?

var myJSON={65:[],83:[],68:[],70:[],71:[]};
window.onkeydown=function(e){
    console.log(myJSON);
    myJSON[parseInt(e.keyCode)].push(1);
}

http://jsfiddle.net/mp2v7/

4

3 に答える 3

2

これを試して:

var keyStopper = false;

window.onkeydown = function(e) {
    if (keyStopper) {
        return e.keyCode;
    }
    keyStopper = true;
    console.log(myJSON);
    myJSON[parseInt(e.keyCode)].push(1);
};

window.onkeyup = function(e) {
    keyStopper = false;
};
于 2012-10-21T16:32:11.320 に答える
0

キーアップを試してください:

var myJSON={65:[],83:[],68:[],70:[],71:[]};
window.onkeyup=function(e){
    console.log(myJSON);
    myJSON[parseInt(e.keyCode)].push(1);
}
于 2012-10-21T16:25:32.740 に答える
-1

keydown および keyup イベントのみを使用します。それらはその名前が示すように機能し、 keydown : キーが押されたときの単一のイベントです。keyup - キーが離されたときの単一のイベント。

于 2012-10-21T16:46:28.580 に答える