Frage an javascript – Gesamtes Formular onChange

27

Wie kann ich verwendenonChange oder eine ähnliche Veranstaltung für alleform Elemente? Ich möchte nicht verwendenonChange für jedes Feld separat.

warum nicht? Im HTML-Ereignis können Sie jedes Mal die gleiche Funktion aufrufen. Es handelt sich also um das Kopieren, Einfügen von wahrscheinlich nicht mehr als 20 Zeichen und das Schreiben von 1 Funktion. 11684
tutdiese Hilfe? Nadir Sampaoli

Deine Antwort

2   die antwort
34

Wenn Sie jQuery verwenden, können Sie das verwendenchange event für das Formularelement, da das Ereignis in jQuery in die Luft sprudelt.

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

Wenn Sie einfaches Javascript verwenden, wird das Änderungsereignis nicht angezeigt (zumindest nicht browserübergreifend). Sie müssten also den Ereignishandler an jedes Eingabeelement separat anhängen:

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

(Natürlich müssten Sie für alle ausgewählten Bereiche und Textbereiche eine ähnliche Aktion ausführen.)

@ TonyMerryfield: IE9 Mori
Vielen Dank für die Antwort - wissen Sie, welche IE-Mindestversion dies unterstützt? Ich kann keine anständigen Informationen für die von mir durchgeführten Suchen finden - wahrscheinlich zu allgemein in meinen Suchbegriffen ... :) Tony Merryfield
@ Tony Merryfield: JetztformElement.addEventListener('change', doSomething); funktioniert in allen gängigen Browsern. Mori
Hervorragende Antwort. Jake
7

Du kannst den ... benutzenchange Veranstaltung auf derform Element:

formElement.addEventListener('change', doSomething);
Vielen Dank. Nach einigen Tests - ich möchte nur hinzufügen, dass das 'change'-Ereignis hier einfach perfekt dafür ist, da es bei Texteingaben nicht bei jedem Tastendruck ausgelöst wird, sondern genau wie wir es erwarten würden - bei Unschärfe, wenn es eine gab Veränderung. Wie hier:jsfiddle.net/54dftpL6 - so scheint es zu seindas Lösung für die Aufgabe "Formular automatisch bei jeder Änderung speichern", die ich gerade in viel kürzerer Zeit als erwartet abgeschlossen habe :) konrados
Daumen hoch für die Beantwortung Ihrer eigenen Frage 6 Jahre später. Qwerty

Verwandte Fragen