Jak mogę powiązać funkcję z klawiszami lewej i prawej strzałki w JavaScript i / lub jQuery? Spojrzałem na wtyczkę js-hotkey dla jQuery (otacza wbudowaną funkcję wiązania, aby dodać argument do rozpoznawania określonych kluczy), ale wydaje się, że nie obsługuje klawiszy strzałek.
javascript
jquery
keyboard
key-bindings
Alex S.
źródło
źródło
Odpowiedzi:
Jeśli potrzebujesz obsługi IE8, uruchom ciało funkcji jako
e = e || window.event; switch(e.which || e.keyCode) {
.(edycja 2020)
Uwaga:
KeyboardEvent.which
obecnie jest przestarzała. Zobacz ten przykład, używającKeyboardEvent.key
bardziej nowoczesnego rozwiązania do wykrywania klawiszy strzałek.źródło
e.which
takich jak zalecenia jQuery dla różnych przeglądarek, używae.preventDefault()
zamiastreturn false
(return false
w programie obsługi zdarzeń jQuery wyzwala obae.preventDefault()
ie.stopPropagation()
drugie z nich spowoduje, że wszelkie później dodane zdarzenia zakończą się niepowodzeniem, ponieważ zdarzenie nie zostanie do nich propagowane), i na koniec przełącznika, wróci bez dzwonienia,e.preventDefault()
jeśli jest to inny klucz niż szukany, aby nie utrudniać użycia innego klucza, i zamiast$.ui.keyCode.DOWN
tego porównuje się z numerami (DUŻO szybciej).$.ui.keyCode.DOWN
szukasz$
w zakresie leksykalnym, nie znajdując go, wchodząc na wyższy poziom ... szukając$
, powtarzaj, aż w zakresie globalnym, znajdź go w globalnymwindow
, dostęp$
do okna, dostępui
dowindow.$
, dostępkeyCode
dowindow.$.ui
dostępDOWN
onwindow.$.ui.keyCode
dostać się do pierwotnej wartości, które chcesz porównać, a następnie zrobić rzeczywiste porównanie. Niezależnie od tego, czy ta prędkość ma dla ciebie znaczenie, jest osobistą decyzją, po prostu mam tendencję do unikania 4 poziomów dostępu, gdy istnieje sytuacja, w której równie łatwo mogę napisać / skomentować prymitywne.Kody znaków:
źródło
e.which
raczej niże.keyCode
do większej obsługi przeglądarki. Zobacz mój komentarz poniżej.Możesz użyć keyCode klawiszy strzałek (37, 38, 39 i 40 dla lewo, góra, prawo i dół):
Sprawdź powyższy przykład tutaj .
źródło
The event.which property normalizes event.keyCode and event.charCode
- api.jquery.com/event.whichJest to trochę za późno, ale HotKeys ma bardzo poważny błąd, który powoduje, że zdarzenia są wykonywane wielokrotnie, jeśli do elementu podłączysz więcej niż jeden skrót. Wystarczy użyć zwykłego jQuery.
źródło
Po prostu połączyłem najlepsze fragmenty z innych odpowiedzi:
źródło
Możesz użyć KeyboardJS. Napisałem bibliotekę dla takich zadań.
Sprawdź bibliotekę tutaj => http://robertwhurst.github.com/KeyboardJS/
źródło
Krótkie rozwiązanie wykorzystujące zwykły Javascript (dzięki Sygmoral za sugerowane ulepszenia):
Zobacz także https://stackoverflow.com/a/17929007/1397061 .
źródło
document.addEventListener('keydown', myFunction);
Czy na pewno jQuery.HotKeys nie obsługuje klawiszy strzałek? Wcześniej pomieszałem z ich wersją demonstracyjną i obserwowałem działanie lewej, prawej, górnej i dolnej części podczas testowania jej w IE7, Firefox 3.5.2 i Google Chrome 2.0.172 ...
EDYCJA : Wygląda na to, że plik jquery.hotkeys został przeniesiony do Github: https://github.com/jeresig/jquery.hotkeys
źródło
Zamiast używać
return false;
jak w powyższych przykładach, możesz użyć,e.preventDefault();
który robi to samo, ale jest łatwiejszy do zrozumienia i czytania.źródło
return false;
ie.preventDefault();
nie są dokładnie takie same. Zobacz stackoverflow.com/a/1357151/607874Przykład czystego js z przejściem w prawo lub w lewo
źródło
Możesz użyć wiązania jQuery:
źródło
Możesz sprawdzić, czy
arrow key
naciśnięty jest przycisk:źródło
strzałka zapobiegająca jest dostępna tylko dla dowolnego innego obiektu WYBIERZ, no cóż, właściwie nie mam tes na innym obiekcie LOL. ale może zatrzymać zdarzenie strzałki na stronie i typ danych wejściowych.
już próbuję zablokować strzałkę w lewo i prawo, aby zmienić wartość obiektu SELECT za pomocą „e.preventDefault ()” lub „return false” na zdarzeniu „kepress”, „keydown” i „keyup”, ale nadal zmienia wartość obiektu. ale wydarzenie wciąż mówi, że strzałka została naciśnięta.
źródło
Solidna biblioteka JavaScript do przechwytywania danych wprowadzanych z klawiatury i kombinacji klawiszy. Nie ma zależności.
http://jaywcjlove.github.io/hotkeys/
źródło
Przybyłem tutaj, szukając prostego sposobu, aby użytkownik, skupiony na danych wejściowych, używał klawiszy strzałek do +1 lub -1 wprowadzania danych liczbowych. Nigdy nie znalazłem dobrej odpowiedzi, ale stworzyłem następujący kod, który wydaje się działać świetnie - dzięki czemu ten serwis jest teraz dostępny dla całej witryny.
źródło
Z kawą i Jquery
źródło