Propriedade "which" do evento KeyboardEvent
Definição e uso
A propriedade "which" retorna o que desencadeou Evento onkeypress Código de caractere Unicode da tecla, ou o que desencadeou onkeydown ou onkeyup Código de tecla Unicode da tecla pressionada do evento
Diferenças entre os dois tipos de códigos:
- Código de caractere - representa o número do caractere ASCII
- Código de tecla - representa o número da tecla real no teclado
Esses tipos não sempre significam a mesma coisa. Por exemplo, o código de tecla do teclado para "w" minúsculo e "W" maiúsculo é o mesmo, porque a tecla pressionada é a mesma ("W" = número "87"), mas o código de caractere é diferente, porque o caractere resultante é diferente ("w" ou "W", ou seja, "119" ou "87") - consulte os exemplos abaixo para entender melhor.
Dica:Para saber se o usuário pressionou uma tecla impressível (por exemplo, "a" ou "5"), recomenda-se usar essa propriedade no evento onkeypress. Para saber se o usuário pressionou uma tecla de função (por exemplo, "F1", "CAPS LOCK" ou "Home"), use os eventos onkeydown ou onkeyup.
Notas:As versões do IE8 e anteriores não suportam o atributo which. Para essas versões de navegador, você pode usar a propriedade keyCode. No entanto, a propriedade keyCode não funciona no evento onkeypress do Firefox. Para uma solução cross-browser, você pode usar o seguinte código:
var x = event.which || event.keyCode; // Use which ou keyCode dependendo do suporte do navegador
Dica:Para uma lista completa de todos os caracteres Unicode, consulte nossa Referência completa do Unicode.
Dica:Se você quiser converter um valor Unicode para um caractere, use Método fromCharCode().
Notas:Essa propriedade é de leitura apenas.
Notas:Os atributos keyCode e which são fornecidos apenas para compatibilidade. A especificação mais recente do DOM eventos sugere usar a propriedade key (se disponível) em vez disso.
Dica:Se você quiser saber se a tecla "ALT", "CTRL", "META" ou "SHIFT" foi pressionada no momento do evento de tecla, use altKeyectrlKeyemetaKey ou shiftKey Atributo.
Exemplo
Obtenha o valor Unicode da tecla pressionada:
var x = event.which;
Mais exemplos TIY na parte inferior da página.
Sintaxe
event.which
Detalhes técnicos
Retorno: | Valor numérico, representando o código de caractere Unicode ou o código de teclado Unicode. |
---|---|
Versão do DOM: | DOM Level 2 Events |
Suporte do navegador
Os números na tabela indicam a primeira versão do navegador que suporta completamente esse atributo.
Atributo | Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|---|
which | Suporte | 9.0 | Suporte | Suporte | Suporte |
Mais exemplos
Exemplo
Utilize onkeypress e onkeydown para demonstrar a diferença entre os códigos de caracteres e os códigos de teclado:
<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> function uniCharCode(event) { var char = event.which || event.keyCode; // event.keyCode é usado em IE8 e versões anteriores document.getElementById("demo").innerHTML = "Código de CARACTERE Unicode: " + char; } function uniKeyCode(event) { var key = event.which || event.keyCode; // event.keyCode é usado em IE8 e versões anteriores document.getElementById("demo2").innerHTML = "Código de TECLA Unicode: " + key; }
Ao pressionar a tecla "a" na tecla do teclado (sem usar Capslock), os resultados de char e key serão:
Código de CARACTERE Unicode: 97 Código de TECLA Unicode: 65
Exemplo
Se o usuário pressionar a tecla Escape, uma mensagem será exibida:
<input type="text" onkeydown="myFunction(event)"> function myFunction(event) { var x = event.which || event.keyCode; // event.keyCode é usado em IE8 e versões anteriores if (x == 27) { // 27 é a tecla ESC alert ("Você pressionou a tecla Escape!"); } }
Exemplo
Converta o valor Unicode para um caractere (não aplicável a teclas de função):
var x = event.which || event.keyCode; // Obtenha o valor Unicode var y = String.fromCharCode(x); // Converta o valor para um caractere
Páginas relacionadas
Manual de referência HTML DOM:Propriedade key do KeyboardEvent
Manual de referência HTML DOM:Propriedade keyCode do KeyboardEvent
Manual de referência HTML DOM:Propriedade charCode do KeyboardEvent