Jak wykryć naciśnięcie jednego ze strzałek? Użyłem tego, aby dowiedzieć się:
function checkKey(e) {
var event = window.event ? window.event : e;
console.log(event.keyCode)
}
Chociaż działał dla każdego innego klawisza, nie działał dla klawiszy strzałek (być może dlatego, że przeglądarka ma domyślnie przewijać te klawisze).
javascript
keypress
keyboard-events
Mihsathe
źródło
źródło
keypress
zdarzenia dla klawiszy strzałek, ale masz rację, żekeydown
zawsze działa dla klawiszy strzałek.53
wkeydown
wydarzeniu. Dostajesz37
zkeypress
, co jest inną rzecząonkeyup
i zatrzymaj tam wydarzenie. Jednak realistycznie nie powinieneś modyfikować zachowania interfejsu użytkownika za pomocą Javascript.Przy klawiszach funkcji połączenia w górę i w dół. Istnieją różne kody dla każdego klucza.
źródło
e = e ? e : window.event;
Lub:if (typeof(e) === "undefined") { e = window.event; }
keyCode === 32
, niekeyCode == '32'
lubkeyCode === '32'
.event.key === „ArrowRight” ...
Nowsze i znacznie czystsze: użyj
event.key
. Nigdy więcej dowolnych kodów liczbowych! Jeśli dokonujesz transpozycji lub wiesz, że wszyscy użytkownicy korzystają z nowoczesnych przeglądarek, użyj tego!Pełna obsługa:
Możesz łatwo rozszerzyć to, aby sprawdzić
"w", "a", "s", "d"
, lub dowolny inny kluczDokumenty Mozilla
Obsługiwane przeglądarki
PS
event.code
jest taki sam dla strzałźródło
key
a niekeyCode
, to było przestarzałe.Prawdopodobnie najkrótsza formuła:
Demo (dzięki użytkownikowi Angus Grant): http://jsfiddle.net/angusgrant/E3tE6/
To powinno działać w różnych przeglądarkach. Pozostaw komentarz, jeśli istnieje przeglądarka, w której nie działa.
Istnieją inne sposoby uzyskania kodu klucza (np. E.charCode i window.event zamiast e), ale nie powinny być konieczne. Możesz wypróbować większość z nich na stronie http://www.asquare.net/javascript/tests/KeyCode.html . Zauważ, że event.keycode nie działa z onkeypress w Firefox, ale działa z onkeydown.
źródło
Używaj
keydown
, niekeypress
w przypadku klawiszy niedrukowalnych, takich jak klawisze strzałek:Najlepsze odniesienie do zdarzenia kluczowego JavaScript, jakie znalazłem (na przykład pokonując tryb quirksmode), znajduje się tutaj: http://unixpapa.com/js/key.html
źródło
Nowoczesna odpowiedź, ponieważ keyCode jest teraz przestarzałe na rzecz klucza :
źródło
Uważam, że najnowszą metodą byłoby:
Zakłada się, że programista chce, aby kod był aktywny w dowolnym miejscu na stronie, a klient powinien zignorować wszelkie inne naciśnięcia klawiszy. Wyeliminuj event.preventDefault (); linia, jeśli naciśnięcia klawiszy, w tym te przechwycone przez ten moduł obsługi, powinny być nadal aktywne.
źródło
źródło
arrs
poza funkcją? Nie trzeba go odtwarzać za każdym razemOto przykładowa implementacja:
źródło
var targetElement = typeof $0 !== 'undefined' ? $0 : document.body;
lub po prostu:var targetElement = document.body;
jest w porządkuOto jak to zrobiłem:
źródło
Byłem w stanie uwięzić je za pomocą jQuery:
Przykład: http://jsfiddle.net/AjKjU/
źródło
keypress
nie będzie działać z klawiszami strzałek. Musisz użyć$(document).on('keydown', function() {...})
zamiast tegoTo jest działający kod dla chrome i firefox
źródło
Szukałem również tej odpowiedzi, dopóki nie natknąłem się na ten post.
Znalazłem inne rozwiązanie, aby poznać kod różnych kluczy, dzięki uprzejmości mojego problemu. Chciałem tylko podzielić się moim rozwiązaniem.
Wystarczy użyć zdarzenia keyup / keydown, aby zapisać wartość w konsoli / ostrzec to samo przy użyciu
event.keyCode
. lubić-- rupam
źródło
To krócej.
function IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
źródło
if ([37,38,39,40].indexOf(e.keyCode)!=-1){ console.log('arrow pressed') }
Ta biblioteka się kołysze! https://craig.is/killing/mice
Musisz jednak nacisnąć sekwencję nieco szybko, aby podświetlić kod na tej stronie.
źródło
Re odpowiedzi, że trzeba
keydown
niekeypress
.Zakładając, że chcesz poruszać czymś w sposób ciągły, gdy klawisz jest wciśnięty, znajduję to
keydown
działa to we wszystkich przeglądarkach oprócz Opery. W przypadku Operykeydown
wyzwala się tylko przy pierwszym naciśnięciu. Aby pomieścić Opera:źródło
Klawisze strzałek są uruchamiane przy włączaniu
onkeydown pozwala na ctrl, alt, gówno
onkeyup pozwala na zakładkę, strzałki w górę, strzałki w dół, strzałki w lewo, strzałki w dół
źródło
Jeśli używasz jquery, możesz to zrobić w ten sposób,
źródło
kontrolować kody klawiszy
%=37
i&=38
... i tylko klawisze strzałek w lewo = 37 w górę = 38źródło
Jeśli chcesz wykryć naciśnięcia klawiszy strzałek, ale nie potrzebujesz ich w Javascript
źródło
Z kluczem i ES6.
Daje to oddzielną funkcję dla każdego klawisza strzałki bez użycia przełącznika, a także działa z klawiszami 2,4,6,8 w klawiaturze numerycznej, gdy
NumLock
jest włączony.źródło