Com o jQuery, como descubro qual tecla foi pressionada quando vinculo ao evento de pressionamento de tecla?
$('#searchbox input').bind('keypress', function(e) {});
Quero acionar um envio quando ENTERpressionado.
[Atualizar]
Mesmo que eu tenha encontrado a (ou melhor: uma) resposta para mim, parece haver algum espaço para variação;)
Existe uma diferença entre keyCode
e which
- especialmente se eu estou procurando ENTER, que nunca será uma chave unicode?
Alguns navegadores fornecem uma propriedade e outros fornecem a outra?
Respostas:
Na verdade, isso é melhor:
fonte
e.which
o evento que você estiver usando.e.which
não está definido (permanece0
), mase.keyCode
está (9
). Veja stackoverflow.com/questions/4793233/… por que isso importa.Tente isto
fonte
Se você estiver usando a interface do usuário do jQuery, terá traduções para códigos de chave comuns. Em ui / ui / ui.core.js :
Há também algumas traduções em tests / simulate / jquery.simulate.js, mas não encontrei nenhuma na biblioteca JS principal. Veja bem, eu apenas cumprimentei as fontes. Talvez haja outra maneira de se livrar desses números mágicos.
Você também pode usar String.charCodeAt e .fromCharCode:
fonte
Uncaught TypeError: String.charCodeAt is not a function
Eu acho que você quis dizer'\r'.charCodeAt(0) == 13
Dado que você está usando jQuery, você deve absolutamente usar. Sim, navegadores diferentes definem propriedades diferentes, mas o jQuery os normalizará e definirá o valor .que em cada caso. Consulte a documentação em http://api.jquery.com/keydown/ e declara:
fonte
... este exemplo impede o envio de formulários (regularmente a intenção básica ao capturar a tecla # 13):
fonte
edit: Isso só funciona para o IE ...
Sei que essa é uma postagem antiga, mas alguém pode achar isso útil.
Os eventos-chave são mapeados, portanto, em vez de usar o valor do código-chave, você também pode usar o valor-chave para torná-lo um pouco mais legível.
Aqui está uma folha de dicas com as teclas mapeadas que eu obtive deste blog
fonte
e.key
propriedade.fonte
event.which
.Confira o excelente plugin jquery.hotkeys que suporta combinações de teclas:
fonte
Espero que isso possa ajudá-lo !!!
fonte
Esta é praticamente a lista completa de códigos-chave:
fonte
Ok, eu era cego:
conterá o código ASCII da chave.
Veja https://developer.mozilla.org/En/DOM/Event.which
fonte
Aqui está uma descrição detalhada do comportamento de vários navegadores http://unixpapa.com/js/key.html
fonte
Vou apenas complementar o código da solução com esta linha
e.preventDefault();
. No caso do campo de entrada do formulário, não comparecemos para enviar no enter pressionadofonte
Adicione envio oculto, não digite oculto, envie simplesmente com style = "display: none". Aqui está um exemplo (atributos desnecessários removidos do código).
ele aceita a tecla enter nativamente, sem necessidade de JavaScript, funciona em todos os navegadores.
fonte
Aqui está uma extensão jquery que manipulará a tecla Enter que está sendo pressionada.
Um exemplo de trabalho pode ser encontrado aqui http://jsfiddle.net/EnjB3/8/
fonte
Bruxa;)
Demonstração: http://jsfiddle.net/molokoloco/hgXyq/24/
fonte
Use
event.key
e JS moderno!Não há mais códigos numéricos . Você pode verificar a chave diretamente. Por exemplo
"Enter"
,"LeftArrow"
,"r"
, ou"R"
.Documentos do Mozilla
Navegadores suportados
fonte
você deve ter firbug para ver um resultado no console
fonte
Alguns navegadores usam keyCode, outros usam qual. Se você estiver usando o jQuery, poderá usar com segurança o que, como jQuery, padroniza as coisas. Na realidade,
fonte
De acordo com a resposta de Kilian:
Se apenas pressionar a tecla for importante:
fonte
A maneira mais fácil que eu faço é:
fonte
event.which
vez deevent.keyCode
. Da API jQuery :The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input.
Acabei de criar um plugin para jQuery que permite mais fácil
keypress
eventos . Em vez de precisar encontrar o número e inseri-lo, tudo o que você precisa fazer é o seguinte:Como usá-lo
É simples assim. Observe que não
theKeyYouWantToFireAPressEventFor
é um número, mas uma corda (por exemplo, para acionar quando pressionado, para acionar quando pressionado ou, no caso de um número, apenas sem aspas. Isso seria acionado quando pressionado.)"a"
A"ctrl"
CTRL (control)1
1O Exemplo / Código:
Mostrar snippet de código
Como a versão longa é tão ... bem ... longa, criei um link para o PasteBin:
http://pastebin.com/VUaDevz1
fonte
O
event.keyCode
eevent.which
está obsoleto. Consulte a resposta @Gibolt acima ou verifique a documentação: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventevent.key
deve ser usadokeypress
O evento também foi reprovado: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_eventfonte
Tente o seguinte:
fonte