Qual a diferença entre os eventos onkeypress, onkeyup e onkeydown?

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

Leave a Reply

Your email address will not be published. Required fields are marked *