Jak uzyskać powiązanie funkcji z lewymi i prawymi strzałkami w JavaScript i/lub jQuery? Spojrzałem na wtyczkę js-hotkey dla jQuery (zawija wbudowaną funkcję bind, aby dodać argument rozpoznawania określonych kluczy), ale nie obsługuje klawiszy strzałek.Wiążące klawisze strzałek w JS/jQuery
Odpowiedz
$(document).keydown(function(e) {
switch(e.which) {
case 37: // left
break;
case 38: // up
break;
case 39: // right
break;
case 40: // down
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll/move caret)
});
umieścić swój kod niestandardowy dla klawiszy strzałek pomiędzy odpowiadającymi case
i break
linii.
e.which
jest znormalizowany przez jQuery, więc działa we wszystkich przeglądarkach. Dla czystego podejścia JavaScript, wymienić pierwsze z dwóch linii:
document.onkeydown = function(e) {
e = e || window.event;
switch(e.which || e.keyCode) {
(edycja 2017)
Jeśli czujesz fantazyjne, można wykorzystać e.key
zamiast e.which
lub e.keyCode
teraz. e.key
staje się zalecanym standardem, umożliwiając sprawdzanie ciągów znaków: 'ArrowLeft'
, 'ArrowUp'
, 'ArrowRight'
, 'ArrowDown'
. Nowe przeglądarki obsługują je natywnie, check here.
$(document).keydown(function(e){
if (e.keyCode == 37) {
alert("left pressed");
return false;
}
});
kody Charakter:
37 - left
38 - up
39 - right
40 - down
Czy istnieje jakiś cel w zamian? –
Zatrzymuje wszelkie kolejne uderzenia keydown. –
O rację ... Właśnie napisałem to za pomocą przełącznika i zrywałem. –
Można używać keyCode z klawiszy strzałek (37, 38, 39 i 40 w lewo, w górę, w prawo iw dół):
$('.selector').keydown(function (e) {
var keyCode = e.keyCode || e.which,
arrow = {left: 37, up: 38, right: 39, down: 40 };
switch (keyCode) {
case arrow.left:
//..
break;
case arrow.up:
//..
break;
case arrow.right:
//..
break;
case arrow.down:
//..
break;
}
});
Sprawdź powyższy przykład here.
Nie jestem pewien co do korzystania z || operator w linii 2. Czy nie jest to wartość inna niż zerowa lub niezerowa, a nie gwarantowana? Chciałbym użyć czegoś więcej jak: var keyCode = (e.keyCode? E.keyCode: e.which); +1 za użycie obiektu strzałki, aby nadać imienne nazwy. – Mnebuerquo
Jeśli używasz jQuery, nie musisz testować dla e., Które: 'Zdarzenie. Właściwość normalizuje event.keyCode i event.charCode' - http://api.jquery.com/event.which/ – JCM
. Próbuję umieścić kluczowego detektora zdarzeń na stole, ale to nie zadziała. Czy istnieje ograniczona liczba typów selektorów obsługujących kluczowe detektory zdarzeń? –
Czy na pewno program jQuery.HotKeys nie obsługuje klawiszy strzałek? Zdarzyło mi się, że robiłem demo i obserwowałem je w lewo, w prawo, w górę i w dół, gdy testowałem w IE7, Firefox 3.5.2 i Google Chrome 2.0.172 ...
EDIT: jquery.hotkeys został przeniesiony do Github: https://github.com/jeresig/jquery.hotkeys
Czytałem, gdzie napisano, że było oparte na innej bibliotece i założyłem, że lista obsługiwanych kluczy nadal jest stosowana. –
Trochę za późno, ale HotKeys ma bardzo poważny błąd, który powoduje, że zdarzenia są wykonywane wielokrotnie, jeśli do elementu zostanie dołączony więcej niż jeden skrót. Po prostu użyj zwykłego jQuery.
$(element).keydown(function(ev) {
if(ev.which == $.ui.keyCode.DOWN) {
// your code
ev.preventDefault();
}
});
+1 za użycie obiektu ui keycode. Znacznie łatwiej zrozumieć niż 37, 38, 39 lub 40. Nie wiem, dlaczego najlepszą odpowiedzią jest użycie e.keyCode, gdy dokumentacja jQuery wyraźnie stwierdza, że używa e., Aby uwzględnić różnice przeglądarki. Mam nadzieję, że ta odpowiedź zyska większe uznanie za robienie tego dobrze. –
Używanie $ .ui.keyCode.DOWN na każdym naciśnięciu klawisza jest DUŻO wolniejsze niż użycie numeru. Wystarczy dodać komentarz, jeśli chodzi o przejrzystość, zwłaszcza, że musi być uruchamiany za każdym naciśnięciem dowolnego klawisza. –
Zamiast return false;
jak w przykładach powyżej, można użyć e.preventDefault();
który robi to samo, ale jest łatwiejsze do zrozumienia i odczytania.
'return false;' i 'e.preventDefault();' nie są dokładnie takie same. Zobacz http://stackoverflow.com/a/1357151/607874 –
ja po prostu łączy najlepsze kawałki z innych odpowiedzi:
$(document).keydown(function(e){
switch(e.which) {
case $.ui.keyCode.LEFT:
// your code here
break;
case $.ui.keyCode.UP:
// your code here
break;
case $.ui.keyCode.RIGHT:
// your code here
break;
case $.ui.keyCode.DOWN:
// your code here
break;
default: return; // allow other keys to be handled
}
// prevent default action (eg. page moving up/down)
// but consider accessibility (eg. user may want to use keys to choose a radio button)
e.preventDefault();
});
Skąd pochodzi "ui"? Pobieranie "TypeError: $ .ui jest niezdefiniowane" EDIT - Brakowało mi interfejsu użytkownika JQuery. Mam to załadowane - nie więcej błędów. –
Najwyraźniej również używa interfejsu jQuery UI, który musi mieć to wyliczenie. Nie użyłbym jQuery UI tylko do tego, przy okazji. –
Można użyć KeyboardJS. Napisałem bibliotekę do zadań podobnych do tego.
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'); });
Zamówienie biblioteka tutaj =>http://robertwhurst.github.com/KeyboardJS/
lakoniczny rozwiązanie przy użyciu zwykłego Javascript (dzięki Sygmoral proponowanych usprawnień):
document.onkeydown = function(e) {
switch (e.keyCode) {
case 37:
alert('left');
break;
case 39:
alert('right');
break;
}
};
zobaczyć również https://stackoverflow.com/a/17929007/1397061.
Prawdopodobnie również warte wiązania za pomocą 'document.addEventListener ('keydown', myFunction);' – nathanbirrell
Można użyć jQuery wiąże:
$(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');
}
});
Przy kawie & Jquery
$(document).on 'keydown', (e) ->
switch e.which
when 37 then console.log('left key')
when 38 then console.log('up key')
when 39 then console.log('right key')
when 40 then console.log('down key')
e.preventDefault()
Można sprawdzić pogoda w arrow key
zostanie naciśnięty przez:
$(document).keydown(function(e){
if (e.keyCode > 36 && e.keyCode < 41) {
alert("arrowkey pressed");
return false;
}
});
zapobiec strzałkę dostępne tylko dla jakikolwiek inny obiekt WYBIERZ, a właściwie nie mam innego obiekt LOL. , ale może zatrzymać zdarzenie ze strzałką na stronie i typie wejścia.
Już próbuję zablokować strzałkę w lewo i prawo, aby zmienić wartość obiektu SELECT, używając "e.preventDefault()" lub "return false" na zdarzeniu "kepress" "keydown" i "keyup", ale wciąż zmienia wartość obiektu. ale wydarzenie nadal mówi ci, że strzałka została naciśnięta.
Solidna biblioteka JavaScript do przechwytywania wprowadzonych klawiszy i wprowadzonych kombinacji klawiszy. Nie ma żadnych zależności.
http://jaywcjlove.github.io/hotkeys/
hotkeys('right,left,up,down', function(e, handler){
switch(handler.key){
case "right":console.log('right');break
case "left":console.log('left');break
case "up":console.log('up');break
case "down":console.log('down');break
}
});
Przyjechałem tu szuka prosty sposób, aby użytkownik, gdy koncentruje się na wejściu, za pomocą klawiszy strzałek do +1 lub -1 wejście numerycznej. Nigdy nie znalazłem dobrej odpowiedzi, ale napisałem poniższy kod, który wydaje się działać świetnie - teraz robię to w całej witrynie.
$("input").bind('keydown', function (e) {
if(e.keyCode == 40 && $.isNumeric($(this).val())) {
$(this).val(parseFloat($(this).val())-1.0);
} else if(e.keyCode == 38 && $.isNumeric($(this).val())) {
$(this).val(parseFloat($(this).val())+1.0);
}
});
Przykład czystych js z wyjazdem prawo lub w lewo
window.addEventListener('keydown', function (e) {
// go to the right
if (e.keyCode == 39) {
}
// go to the left
if (e.keyCode == 37) {
}
});
- 1. C# i klawisze strzałek
- 2. Klawisze strzałek z NSTableView
- 3. vim: jak określić klawisze strzałek
- 4. Klawisze strzałek nie działają w sqlplus
- 5. Jak przechwytywać klawisze strzałek w pliku node.js
- 6. Jquery keypress event ignoruje klawisze strzałek
- 7. Stwórz klawisze strzałek i usuń działa w linii poleceń KornShell
- 8. Jak działają klawisze strzałek w programie MIT Scheme?
- 9. Jak mogę obsługiwać klawisze strzałek w skrypcie Perla pod cygwin?
- 10. "screen" jakoś odtrąca moje klawisze strzałek w emacs po^Z
- 11. Jak mogę odpowiedzieć na zewnętrzne klawisze strzałek na klawiaturze?
- 12. Podstawowe klawisze strzałek i użycie strony w górę/w dół w intellij na macu
- 13. Jak powiązać klawisze strzałek w górę iw dół, aby włączyć nawigację w wierszach tabeli?
- 14. Jak wykrywać klawisze strzałek w konsoli java, a nie w GUI?
- 15. Vim: klawisze strzałek, aby poruszać się po linii w trybie wstawiania
- 16. Klawisze strzałek przestają działać w powłoce Pythona po uaktualnieniu systemu Mac OS do Sierra
- 17. Wiążące imperatywnie
- 18. strzałek przestać działać przy użyciu mniej w gnu sesji screen
- 19. Wyłącz nawigację za pomocą klawiszy strzałek
- 20. Wygląd strzałek w ggplot2 geom_segment()
- 21. Jak wyłączyć klawisze Esc i kursora w vim
- 22. REDIS: Klawisze numeryczne (1,2,3 ..) kontra skompresowane klawisze (A9z3, A9z4 ..)?
- 23. Wykrywanie klawiszy strzałek w IE za pomocą javascript/jQuery
- 24. C++/MATLAB Mex wiążące
- 25. Klawisze komend Vim comma
- 26. Zaleta strzałek nad funkcjami
- 27. Jak nagrywać naciśnięte klawisze?
- 28. Wykryj klawisze do wydruków
- 29. Wykreślanie strzałek z gnuplotem
- 30. Sterowanie liczbą głowic strzałek
Zdecydowanie najlepszą odpowiedzią. Używa 'e., Który' jak jQuery zaleca dla przeglądarki, używa 'e.preventDefault()' zamiast 'return false' (' return false' na module obsługi zdarzeń jQuery wyzwala zarówno 'e.preventDefault()' jak i 'e .stopPropagation() ', z których druga spowoduje niepowodzenie późniejszych dodanych zdarzeń, ponieważ zdarzenie nie będzie się do nich propagować), a na końcu przełącznika zwróci * bez * wywoływania' e.preventDefault () 'jeśli jest to jakikolwiek inny klucz niż te, których szukania nie przeszkadza użycie innego klucza, a zamiast' $ .ui.keyCode.DOWN' porównuje się do liczb (DUŻO szybciej). –
Gdzie znajdziesz te kluczowe kody? –
Nathan: wygląda na to, że nie wszystkie kody klawiszy są zgodne między przeglądarkami, ale klawisze strzałek to tylko niektóre z nich. Zobacz tutaj: http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes – Sygmoral