Wie erkenne ich, wenn eine der Pfeiltasten gedrückt wird? Ich habe das benutzt, um herauszufinden:
function checkKey(e) {
var event = window.event ? window.event : e;
console.log(event.keyCode)
}
Obwohl es für jede andere Taste funktionierte, funktionierte es nicht für Pfeiltasten (möglicherweise, weil der Browser standardmäßig auf diesen Tasten scrollen soll).
javascript
keypress
keyboard-events
mihsathe
quelle
quelle
keypress
Ereignisse für Pfeiltasten aus, aber Sie haben Recht, dass dieskeydown
immer für Pfeiltasten funktioniert.53
mit einemkeydown
Event. Sie bekommen37
mitkeypress
, was eine andere Sache istonkeyup
und stoppen Sie das Ereignis dort. Realistisch gesehen sollten Sie das Verhalten der Benutzeroberfläche jedoch nicht mit Javascript ändern.On-Key-Up- und Down-Call-Funktion. Für jeden Schlüssel gibt es unterschiedliche Codes.
quelle
e = e ? e : window.event;
Oder:if (typeof(e) === "undefined") { e = window.event; }
keyCode === 32
, nichtkeyCode == '32'
oder überprüft werden solltekeyCode === '32'
.event.key === "ArrowRight" ...
Neuere und viel sauberere: verwenden
event.key
. Keine willkürlichen Nummerncodes mehr! Wenn Sie transpilieren oder wissen, dass Ihre Benutzer alle moderne Browser verwenden, verwenden Sie diese Option!Ausführliche Behandlung:
Sie können dies leicht erweitern, um nach
"w", "a", "s", "d"
einem anderen Schlüssel zu suchenMozilla Docs
Unterstützte Browser
PS
event.code
ist das gleiche für Pfeilequelle
key
und nichtkeyCode
, das war veraltet.Möglicherweise die knappste Formulierung:
Demo (danke an Benutzer Angus Grant): http://jsfiddle.net/angusgrant/E3tE6/
Dies sollte browserübergreifend funktionieren. Hinterlasse einen Kommentar, wenn es einen Browser gibt, in dem er nicht funktioniert.
Es gibt andere Möglichkeiten, den Schlüsselcode abzurufen (e.which, e.charCode und window.event anstelle von e), diese sollten jedoch nicht erforderlich sein. Sie können die meisten davon unter http://www.asquare.net/javascript/tests/KeyCode.html ausprobieren . Beachten Sie, dass event.keycode in Firefox nicht mit onkeypress funktioniert, aber mit onkeydown.
quelle
Verwenden Sie diese Option
keydown
nichtkeypress
für nicht druckbare Tasten wie Pfeiltasten:Die beste JavaScript-Schlüsselereignisreferenz, die ich gefunden habe (z. B. den Quirksmode in den Griff bekommen), ist hier: http://unixpapa.com/js/key.html
quelle
Moderne Antwort, da keyCode jetzt zugunsten von key veraltet ist :
quelle
Ich glaube, die neueste Methode wäre:
Dies setzt voraus, dass der Entwickler möchte, dass der Code an einer beliebigen Stelle auf der Seite aktiv ist, und dass der Client alle anderen Tastendrücke ignoriert. Beseitigen Sie das event.preventDefault (); Zeile, wenn Tastendrücke, einschließlich der von diesem Handler abgefangenen, noch aktiv sein sollten.
quelle
quelle
arrs
außerhalb der Funktion zu setzen? Keine Notwendigkeit, es bei jedem Anruf neu zu erstellenHier ist eine Beispielimplementierung:
quelle
var targetElement = typeof $0 !== 'undefined' ? $0 : document.body;
var targetElement = document.body;
So habe ich es gemacht:
quelle
Ich konnte sie mit jQuery fangen:
Ein Beispiel: http://jsfiddle.net/AjKjU/
quelle
keypress
funktioniert nicht mit Pfeiltasten. Sie müssen$(document).on('keydown', function() {...})
stattdessen verwendenDas ist der Arbeitscode für Chrome und Firefox
quelle
Ich habe auch nach dieser Antwort gesucht, bis ich auf diesen Beitrag gestoßen bin.
Ich habe eine andere Lösung gefunden, um den Schlüsselcode der verschiedenen Schlüssel zu kennen, dank meines Problems. Ich wollte nur meine Lösung teilen.
Verwenden Sie einfach das Ereignis keyup / keydown, um den Wert in die Konsole zu schreiben
event.keyCode
. mögen-- Rupam
quelle
Das ist kürzer.
function IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
quelle
if ([37,38,39,40].indexOf(e.keyCode)!=-1){ console.log('arrow pressed') }
Diese Bibliothek rockt! https://craig.is/killing/mice
Sie müssen die Sequenz etwas schnell drücken, um den Code auf dieser Seite hervorzuheben.
quelle
Re Antworten, die Sie
keydown
nicht brauchenkeypress
.Angenommen, Sie möchten etwas kontinuierlich bewegen, während die Taste gedrückt wird,
keydown
funktioniert dies für alle Browser außer Opera. Für Opera wirdkeydown
nur beim ersten Drücken ausgelöst. Um Opera zu verwenden, verwenden Sie:quelle
Pfeiltasten werden beim Tastendruck ausgelöst
Onkeydown erlaubt Strg, Alt, Scheiße
onkeyup erlaubt Tab, Aufwärtspfeile, Abwärtspfeile, Linkspfeile, Abwärtspfeile
quelle
Wenn Sie jquery verwenden, können Sie dies auch so tun:
quelle
Steuern Sie die Tastencodes
%=37
und&=38
... und nur noch die Pfeiltasten = 37 bis = 38quelle
Wenn Sie Pfeiltasten erkennen möchten, diese aber in Javascript nicht spezifisch benötigen
quelle
Mit Schlüssel und ES6.
Dies gibt Ihnen eine separate Funktion für jede Pfeiltaste ohne Verwendung eines Schalters und funktioniert auch mit den 2,4,6,8-Tasten im Nummernblock, wenn diese aktiviert
NumLock
sind.quelle