KeyboardEvent qual propriedade
Exemplo
Obtenha o valor Unicode da tecla do teclado pressionada:
var x = event.which;
Mais exemplos de "Experimente você mesmo" abaixo.
Definição e uso
A propriedade which retorna o código de caractere Unicode da tecla que acionou o evento onkeypress ou o código de chave Unicode da chave que acionou o evento onkeydown ou onkeyup .
A diferença entre os dois tipos de código:
- Códigos de caracteres - Um número que representa um caractere ASCII
- Códigos de teclas - Um número que representa uma tecla real no teclado
Esses tipos nem sempre significam a mesma coisa; por exemplo, um "w" minúsculo e um "W" maiúsculo têm o mesmo código de teclado, porque a tecla pressionada no teclado é a mesma (apenas "W" = o número "87"), mas um código de caractere porque o caractere resultante é diferente (ou "w" ou "W", que é "119" ou "87") - Consulte "Mais exemplos" abaixo para entendê-lo melhor.
Dica: Para saber se o usuário está pressionando uma tecla imprimível (por exemplo, "a" ou "5"), é recomendável usar esta propriedade no evento onkeypress. Para saber se o usuário está pressionando uma tecla de função (por exemplo, "F1", "CAPS LOCK" ou "Home"), use o evento onkeydown ou onkeyup.
Nota: A propriedade which não é suportada no IE8 e versões anteriores. Para essas versões do navegador, você pode usar a propriedade keyCode . No entanto, a propriedade keyCode não funciona no evento onkeypress no Firefox. Para uma solução entre navegadores, você pode usar o seguinte código:
var x = event.which || event.keyCode; // Use either which or keyCode, depending on browser support
Dica: Para obter uma lista de todos os caracteres Unicode, estude nossa Referência Unicode Completa .
Dica: Se você deseja converter o valor Unicode retornado em um caractere, use o método fromCharCode() .
Nota: Esta propriedade é somente leitura.
Observação: a propriedade which e keyCode é fornecida apenas para compatibilidade. A versão mais recente da especificação de eventos do DOM recomenda o uso da propriedade key (se disponível).
Dica: Se você quiser saber se a tecla "ALT", "CTRL", "META" ou "SHIFT" foi pressionada quando ocorreu um evento de tecla, use a propriedade altKey , ctrlKey , metaKey ou shiftKey .
Suporte ao navegador
Os números na tabela especificam a primeira versão do navegador que oferece suporte total à propriedade.
Property | |||||
---|---|---|---|---|---|
which | Yes | 9.0 | Yes | Yes | Yes |
Sintaxe
event.which
Detalhes técnicos
Valor de retorno: | Um número, representando um código de caractere Unicode ou o código de chave Unicode |
---|---|
Versão DOM: | Eventos DOM Nível 2 |
Mais exemplos
Exemplo
Usando onkeypress e onkeydown para demonstrar as diferenças entre códigos de caracteres e códigos de teclado:
<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)">
function uniCharCode(event) {
var char = event.which || event.keyCode; // event.keyCode is used for IE8 and earlier
document.getElementById("demo").innerHTML = "Unicode CHARACTER code: " + char;
}
function uniKeyCode(event) {
var key = event.which || event.keyCode; // event.keyCode is used for IE8 and earlier
document.getElementById("demo2").innerHTML = "Unicode KEY code: " + key;
}
Ao pressionar a tecla "a" do teclado (sem usar caps lock), o resultado de char e key será:
Unicode CHARACTER code: 97
Unicode KEY code: 65
Exemplo
Alerte algum texto se o usuário pressionar a tecla Escape:
<input type="text" onkeydown="myFunction(event)">
function myFunction(event) {
var x = event.which || event.keyCode; // event.keyCode is used for IE8 and earlier
if (x == 27) { // 27 is the ESC key
alert ("You pressed the Escape key!");
}
}
Exemplo
Converta o valor Unicode em um caractere (não funciona para teclas de função):
var x = event.which || event.keyCode; // Get the Unicode value
var y = String.fromCharCode(x); // Convert the value into a character
Páginas relacionadas
Referência HTML DOM: propriedade da chave KeyboardEvent
Referência HTML DOM: propriedade keyCode KeyboardEvent
Referência HTML DOM: propriedade KeyboardEvent charCode