Czy ktoś może mi powiedzieć, jaka jest różnica między wydarzeniami change
a input
?
Używam jQuery do ich dodawania:
$('input[type="text"]').on('change', function() {
alert($(this).val());
})
Działa również z input
zamiast change
.
Może jakaś różnica w kolejności wydarzeń w stosunku do skupienia?
javascript
jquery
events
dom
Gabriel Petrovay
źródło
źródło
input
Zdarzenie rejestruje również wklejenie. Zobacz stackoverflow.com/questions/15727324/…Odpowiedzi:
Według tego postu :
oninput
zdarzenie występuje, gdy zawartość tekstowa elementu zostanie zmieniona za pośrednictwem interfejsu użytkownika.onchange
występuje, gdy wybór, stan zaznaczenia lub zawartość elementu uległy zmianie . W niektórych przypadkach występuje tylko wtedy, gdy element traci fokus lub po naciśnięciu klawisza return(Enter), a wartość została zmieniona. Atrybut onchange można stosować z:<input>
,<select>
, i<textarea>
.TL; DR:
oninput
: wszelkie zmiany wprowadzone w treści tekstuonchange
:<input />
: zmień + stracić skupienie<select>
: zmień opcjęźródło
onchange
występuje „gdy element traci fokus”, podczas gdyoninput
występuje przy każdej zmianie tekstu.onchange
uruchamia się również po naciśnięciu klawisza Enter, podczas gdy nadal koncentrujesz.Te
change
event
pożary w większości przeglądarek, gdy zawartość jest zmieniana i element tracifocus
. Zasadniczo jest to zbiór zmian. Nie będzie odpalać przy każdej zmianie, jak w tym przypadkuinput
event
.Te
input
event
pożary synchronicznie na zmianę zawartości dla tego elementu. W związku z tym detektor zdarzeń ma tendencję do częstszego uruchamiania.Różne przeglądarki nie zawsze zgadzają się, czy zdarzenie zmiany powinno być uruchamiane w przypadku określonych typów interakcji
źródło
input
wydarzenie.Dokumentacja MDN ma jasne wyjaśnienie (nie jestem pewien, kiedy została dodana):
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
źródło