Muitas vezes os eventos onkeypress, onkeyup e onkeydown são utilizados para o mesmo fim: receber os eventos do teclado. Entretanto existem algumas diferenças básicas no funcionamento deles.
A diferença primordial entre eles é relacionado a quando os eventos são disparados. O onkeydown é disparado assim que a tecla é pressionada, sendo assim o primeiro entre os eventos a ser disparado. Em seguida é a vez do onkeypress e por último, quando a tecla é solta, o evento onkeyup é executado.
Outra diferença fundamental é que nem todas as teclas são tratadas em todos os navegadores no onkeypress. Em geral ele se limita apenas em disparar eventos quando a tecla, única, gerar algum caractere ASCII, fazendo com que ALT, CTRL e Backspace por exemplo, não disparem eventos. Por outro lado, qualquer tecla gera evento tanto em onkeypress quanto em onkeydown, desde que respeitados sua definição, conforme parágrafo anterior.
Há ainda a possibilidade de o teclado ficar com uma mesma tecla pressionada pelo usuário. Nesse caso, o evento onkeyup, seguindo sua própria definição, só será disparado na hora em que houver o evento de soltar a tecla, ao contrário de onkeypress e onkeydown, a cada novo caractere que for gerado num campo texto será disparado o evento – se essa tecla gerar algum caractere ASCII. Caso contrário, apenas o evento onkeydown será chamado.
Evento |
Ordem de disparo |
Caractreres ASCII |
Teclas não-ascii |
Tecla mantida pressionada |
onkeydown |
1 |
Sim |
Sim |
N ocorrências |
onkeypress |
2 |
Sim |
Não |
N ocorrências |
onkeyup |
3 |
Sim |
Sim |
1 ocorrência |