Como faço para vincular uma função às teclas de seta esquerda e direita em Javascript e / ou jQuery? Eu olhei para o plugin js-hotkey para jQuery (envolve a função de ligação incorporada para adicionar um argumento para reconhecer chaves específicas), mas ele não parece suportar teclas de seta.
javascript
jquery
keyboard
key-bindings
Alex S
fonte
fonte
Respostas:
Se você precisar oferecer suporte ao IE8, inicie o corpo da função como
e = e || window.event; switch(e.which || e.keyCode) {
.(editar 2020)
Observe que
KeyboardEvent.which
agora está obsoleto. Veja este exemplo usandoKeyboardEvent.key
uma solução mais moderna para detectar teclas de seta.fonte
e.which
como o jQuery recomenda para o navegador cruzado, usa eme.preventDefault()
vez dereturn false
(return false
em um manipulador de eventos do jQuery aciona ambose.preventDefault()
ee.stopPropagation()
, o segundo dos quais causará falha de eventos adicionados posteriormente, pois o evento não será propagado para eles), e no No final do comutador, retornará sem chamare.preventDefault()
se for qualquer outra tecla que não esteja sendo procurada para não atrapalhar o uso de outras teclas e, em vez disso,$.ui.keyCode.DOWN
será comparada aos números (MUITO mais rápido).$.ui.keyCode.DOWN
você procura$
no seu escopo lexical, não o encontra, subindo um nível ... procurando$
, repita até no escopo global, encontre no globalwindow
, acesse$
na janela, acesseui
na janela, acesse nawindow.$
, acessekeyCode
nawindow.$.ui
, acessoDOWN
emwindow.$.ui.keyCode
chegar ao valor primitivo você quiser comparar, em seguida, fazer a sua real comparando. Se essa velocidade é importante ou não para você, é uma decisão pessoal, apenas tenho a tendência de evitar 4 níveis de acesso quando há uma situação em que posso escrever / comentar com facilidade o primitivo.Códigos de caracteres:
fonte
e.which
vez dee.keyCode
obter mais suporte ao navegador. Veja meu comentário abaixo.Você pode usar o keyCode das teclas de seta (37, 38, 39 e 40 para esquerda, cima, direita e baixo):
Veja o exemplo acima aqui .
fonte
The event.which property normalizes event.keyCode and event.charCode
- api.jquery.com/event.whichÉ um pouco tarde, mas as Teclas de Atalho têm um bug muito importante que faz com que os eventos sejam executados várias vezes se você anexar mais de uma tecla de atalho a um elemento. Basta usar jQuery simples.
fonte
Simplesmente combinei os melhores bits das outras respostas:
fonte
Você pode usar o KeyboardJS. Eu escrevi a biblioteca para tarefas como esta.
Faça o checkout da biblioteca aqui => http://robertwhurst.github.com/KeyboardJS/
fonte
Uma solução concisa usando Javascript simples (obrigado a Sygmoral pelas melhorias sugeridas):
Consulte também https://stackoverflow.com/a/17929007/1397061 .
fonte
document.addEventListener('keydown', myFunction);
Tem certeza de que o jQuery.HotKeys não suporta as teclas de seta? Eu brinquei com a demo deles antes e observei o funcionamento esquerdo, direito, para cima e para baixo quando o testei no IE7, Firefox 3.5.2 e Google Chrome 2.0.172 ...
EDIT : Parece que o jquery.hotkeys foi realocado para o Github: https://github.com/jeresig/jquery.hotkeys
fonte
Em vez de usar
return false;
como nos exemplos acima, você pode usar oe.preventDefault();
que faz o mesmo, mas é mais fácil de entender e ler.fonte
return false;
ee.preventDefault();
não são exatamente iguais. Veja stackoverflow.com/a/1357151/607874Exemplo de js puro com a direita ou a esquerda
fonte
Você pode usar o jQuery bind:
fonte
Você pode verificar se um
arrow key
é pressionado por:fonte
impedir seta disponível apenas para qualquer outro objeto SELECT, bem, na verdade eu não tenho tes em outro objeto LOL. mas pode parar o evento de seta na página e no tipo de entrada.
Eu já tento bloquear a seta para a esquerda e para a direita para alterar o valor do objeto SELECT usando "e.preventDefault ()" ou "return false" no evento "kepress" "keydown" e "keyup", mas ele ainda altera o valor do objeto. mas o evento ainda informa que a seta foi pressionada.
fonte
Uma robusta biblioteca Javascript para capturar as entradas do teclado e as combinações de teclas inseridas. Não possui dependências.
http://jaywcjlove.github.io/hotkeys/
fonte
Eu vim aqui procurando uma maneira simples de permitir que o usuário, quando focado em uma entrada, use as teclas de seta para marcar com +1 ou -1 uma entrada numérica. Eu nunca encontrei uma boa resposta, mas criei o seguinte código que parece funcionar muito bem - tornando este site amplo agora.
fonte
Com café e Jquery
fonte