web-dev-qa-db-ja.com

jQuery keypress()イベントが発生していませんか?

JQueryで左右の矢印キーを押してイベントを発生させようとしています。次のコードを使用して、任意の英数字キーでイベントを起動できますが、カーソルキー(上、下、左、右)は何も起動しません。私は主にIEユーザーのためにサイトを開発しています。これは基幹業務アプリであるためです。ここで何か間違ったことをしていますか?

$('document').keypress(function(e){
    switch (e.which) {
        case 40:
            alert('down');
            break;
        case 38:
            alert('up');
            break;
        case 37:
            alert('left');
            break;
        case 39:
            alert('right');
            break;
        default:
            alert('???');  
            }      
});
37
Mark Struzinski

e.whichはIE trye.keyCode、IEをターゲットにしている場合は、keypress()の代わりにkeydown()を使用することもできます。

詳細については、 http://unixpapa.com/js/key.html を参照してください。

47
Nick Berardi

JQueryで、私はそれをやった この方法

function checkKey(e){
     switch (e.keyCode) {
        case 40:
            alert('down');
            break;
        case 38:
            alert('up');
            break;
        case 37:
            alert('left');
            break;
        case 39:
            alert('right');
            break;
        default:
            alert('???');  
            }      
}

if ($.browser.mozilla) {
    $(document).keypress (checkKey);
} else {
    $(document).keydown (checkKey);
}

また、これらのプラグインを試してみてください。これらはすべてあなたのために機能するように見えます:

http://www.openjs.com/scripts/events/keyboard_shortcuts

http://www.webappers.com/2008/07/31/bind-a-hot-key-combination-with-jquery-hotkeys/

41
Jack Lawson

文字列にWordの「ドキュメント」があります。変化する:

$('document').keypress(function(e){

$(document).keypress(function(e){
13
Abhinay Mehta

もちろんこれは閉じられた問題です、あなたの議論に何かを追加したいと思います

Mozillaでは、このコードの奇妙な動作を観察しました

$(document).keydown(function(){
//my code 
});

コードは2回トリガーされます。デバッグすると、実際には2つのイベントが発生していることがわかりました。「keypress」と「keydown」です。イベントの1つを無効にすると、コードは予期した動作を示しました。

$(document).unbind('keypress');
$(document).keydown(function(){
//my code
});

これはすべてのブラウザーで機能し、ブラウザー固有の(if($。browser.mozilla){})を確認する必要もありません。

これが誰かに役立つことを願っています

2
calyan

元のコードには$( 'document')...がありますが、引用符なしで$(document)が必要です。

2
Denny