439 Stimmen

Bindung von Pfeiltasten in JS/jQuery

Wie gehe ich über die Bindung einer Funktion auf die linke und rechte Pfeiltasten in Javascript und / oder jQuery? Ich schaute auf die js-Hotkey-Plugin für jQuery (wickelt die eingebaute Funktion binden, um ein Argument hinzufügen, um bestimmte Tasten zu erkennen), aber es scheint nicht Pfeiltasten zu unterstützen.

14voto

Robert Hurst Punkte 8367

Sie können KeyboardJS verwenden. Ich schrieb die Bibliothek für Aufgaben genau wie diese.

KeyboardJS.on('up', function() { console.log('up'); });
KeyboardJS.on('down', function() { console.log('down'); });
KeyboardJS.on('left', function() { console.log('right'); });
KeyboardJS.on('right', function() { console.log('left'); });

Besuchen Sie die Bibliothek hier => http://robertwhurst.github.com/KeyboardJS/

14voto

1'' Punkte 25004

Eine knappe Lösung mit einfachem Javascript (Dank an Sygmoral für Verbesserungsvorschläge):

document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 37:
            alert('left');
            break;
        case 39:
            alert('right');
            break;
    }
};

Siehe auch https://stackoverflow.com/a/17929007/1397061 .

9voto

Pandincus Punkte 9396

Sind Sie sicher, dass jQuery.HotKeys die Pfeiltasten nicht unterstützt? Ich habe durcheinander mit ihrer Demo vor und beobachtet links, rechts, oben und unten arbeiten, wenn ich es in IE7, Firefox 3.5.2 und Google Chrome 2.0.172 getestet...

エディテージ : Es scheint, dass jquery.hotkeys nach Github verlagert wurde: https://github.com/jeresig/jquery.hotkeys

5voto

Gaetan Punkte 77

Anstelle der Verwendung von return false; wie in den obigen Beispielen, können Sie e.preventDefault(); die dasselbe tut, aber leichter zu verstehen und zu lesen ist.

4voto

Sie können jQuery bind verwenden:

$(window).bind('keydown', function(e){
    if (e.keyCode == 37) {
        console.log('left');
    } else if (e.keyCode == 38) {
        console.log('up');
    } else if (e.keyCode == 39) {
        console.log('right');
    } else if (e.keyCode == 40) {
        console.log('down');
    }
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X