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.

Experimente você mesmo

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

Experimente você mesmo

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!");
  }
}

Experimente você mesmo

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

Experimente você mesmo

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