Alguém pode me dizer qual é a diferença entre os eventos change
e input
?
Estou usando o jQuery para adicioná-los:
$('input[type="text"]').on('change', function() {
alert($(this).val());
})
Também funciona com em input
vez de change
.
Talvez alguma diferença na ordem do evento em relação ao foco?
javascript
jquery
events
dom
Gabriel Petrovay
fonte
fonte
input
evento também captura colagem. Consulte stackoverflow.com/questions/15727324/…Respostas:
De acordo com esta postagem :
oninput
O evento ocorre quando o conteúdo de texto de um elemento é alterado por meio da interface do usuário.onchange
ocorre quando a seleção, o estado verificado ou o conteúdo de um elemento são alterados . Em alguns casos, só ocorre quando o elemento perde o foco ou ao pressionar return(Enter) e o valor foi alterado. O atributo onchange pode ser usado com:<input>
,<select>
, e<textarea>
.TL; DR:
oninput
: qualquer alteração feita no conteúdo do textoonchange
:<input />
: mudar + perder o foco<select>
opção: alterarfonte
onchange
ocorre "quando o elemento perde o foco", enquantooninput
ocorre a cada mudança de texto.onchange
também é acionado quando você pressiona Enter enquanto ainda está focando.O
change
event
dispara na maioria dos navegadores quando o conteúdo é alterado e o elemento perdefocus
. É basicamente um agregado de mudanças. Não vai disparar para cada mudança, como no casoinput
event
.O
input
event
dispara sincronicamente na mudança do conteúdo do elemento. Como tal, o ouvinte de evento tende a disparar com mais frequência.Navegadores diferentes nem sempre concordam se um evento de mudança deve ser disparado para certos tipos de interação
fonte
input
evento.A documentação MDN tem uma explicação clara (não tenho certeza de quando foi adicionada):
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
fonte