Pytanie w sprawie javascript – Cała forma na Zmiana

27

Jak mogę korzystaćonChange lub podobne wydarzenie dla wszystkichform elementy? Nie chcę używaćonChange dla każdego pola osobno.

robito Wsparcie? Nadir Sampaoli
Dlaczego nie? W przypadku HTML możesz wywoływać tę samą funkcję za każdym razem, więc jest to kwestia wklejania prawdopodobnie nie więcej niż 20 znaków i pisania 1 funkcji. 11684

Twoja odpowiedź

2   odpowiedź
34

Jeśli używasz jQuery, możesz użyćchange zdarzenie w elemencie formularza, ponieważ w jQuery zdarzenie się wzmaga.

$('#formId').change(function(){...});

Jeśli używasz zwykłego javascript, zdarzenie zmiany nie bańki (przynajmniej nie w przeglądarce). Musiałbyś więc osobno dołączyć obsługę zdarzeń do każdego elementu wejściowego:

var inputs = document.getElementsByTagName("input"); 
for (i=0; i<inputs.length; i++){
   inputs[i].onchange = changeHandler;
}

(oczywiście musiałbyś zrobić coś podobnego do wszystkich zaznaczeń i pól tekstowych)

@Mori - czy możesz wyjaśnić swój komentarz, jakie wsparcie jest teraz dostępne dla wymiany formularza? Tony Merryfield
@ Tony Merryfield: TerazformElement.addEventListener('change', doSomething); działa we wszystkich głównych przeglądarkach. Mori
Doskonała odpowiedź. Jake
@Mori Dlaczego nie udzielić prawdziwej odpowiedzi ze swojego komentarza? Ideogram
7

Możesz użyćchange wydarzenie naform element:

formElement.addEventListener('change', doSomething);
Dzięki. Po wykonaniu kilku testów - dodam tylko, że zdarzenie „change” jest tutaj idealne, ponieważ dla wprowadzania tekstu nie uruchamia się dla każdego keydown, ale, tak jak oczekiwalibyśmy - na rozmycie, gdyby był zmiana. Jak tutaj:jsfiddle.net/54dftpL6 - tak to wygląda rozwiązanie dla zadania „zapisuj formularz automatycznie przy każdej zmianie”, które właśnie ukończyłem w czasie znacznie krótszym niż się spodziewałem :) konrados
Kciuki za odpowiedź na twoje pytanie 6 lat później. Qwerty

Powiązane pytania