O keydown evento ocorre quando a tecla for pressionada, seguido imediatamente pelo evento keypress. Em seguida, o evento keyup é gerado quando a chave é liberada.
Para entender a diferença entre keydown e keypress , é útil distinguir entre caracteres e chaves . Uma tecla é um botão físico no teclado do computador. Um caractere é um símbolo digitado pressionando um botão. Em um teclado americano, pressionar a 4tecla enquanto mantém pressionada a Shifttecla normalmente produz um caractere "cifrão". Este não é necessariamente o caso em todos os teclados do mundo. Em teoria, os eventos keydown e keyup representam teclas pressionadas ou liberadas, enquanto o pressionamento de teclaO evento representa um caractere sendo digitado. Na prática, nem sempre é assim que é implementado.
Por um tempo, alguns navegadores dispararam um evento adicional, chamado textInput , imediatamente após pressionar a tecla . As versões anteriores do padrão DOM 3 pretendiam isso como uma substituição do evento de pressionamento de tecla , mas toda a noção foi posteriormente revogada. O Webkit deu suporte a isso entre as versões 525 e 533, e disseram-me que o IE o apoiava, mas nunca o detecte , possivelmente porque o Webkit exigia que ele fosse chamado de textInput enquanto o IE o chamava de textinput .
Há também um evento chamado input , suportado por todos os navegadores, que é acionado logo após uma alteração em uma área de texto ou campo de entrada. Normalmente, o pressionamento de tecla é acionado, o caractere digitado aparece na área de texto e a entrada é acionada. Na verdade, o evento de entrada não fornece nenhuma informação sobre qual chave foi digitada - você teria que inspecionar a caixa de texto para descobrir o que mudou - para não considerarmos realmente um evento de chave e não documentá-lo aqui . Embora tenha sido originalmente definido apenas para áreas de texto e caixas de entrada, acredito que haja algum movimento para generalizá-lo para disparar em outros tipos de objetos também.