Browserübergreifende Lösung für Änderungsereignisse in Optionsfeldgruppen
In Optionsfeldgruppen, in denen mehrere Eingaben denselben Namen haben, das onChange-Ereignis kann bei der Nachverfolgung von Änderungen unzuverlässig sein. Dies liegt daran, dass onChange nicht ausgelöst wird, wenn ein Optionsfeld deaktiviert ist.
Problemumgehung: Ereignisdelegierung und Statusverwaltung
Eine Problemumgehung besteht darin, Ereignisdelegierung und Statusverwaltung zu verwenden um das zuvor aktivierte Optionsfeld zu verfolgen. Indem wir dem Formular mit den Optionsfeldern einen einzelnen Ereignis-Listener hinzufügen, können wir alle Änderungsereignisse erfassen und unseren Status entsprechend aktualisieren:
<code class="javascript">var rad = document.myForm.myRadios; var prev = null; for (var i = 0; i < rad.length; i++) { rad[i].addEventListener('change', function() { (prev) ? console.log(prev.value): null; if (this !== prev) { prev = this; } console.log(this.value) }); }</code>
Dieses Skript weist jedem Optionsfeld einen Änderungsereignis-Listener zu. Wenn eine Änderung auftritt, protokolliert es den Wert des zuvor aktivierten Optionsfelds (sofern vorhanden), bevor die Variable „prev“ aktualisiert wird, um auf das aktuell aktivierte Optionsfeld zu verweisen.
Alternative Ansätze
Das obige ist der detaillierte Inhalt vonWie kann man Änderungen in Optionsfeldgruppen browserübergreifend zuverlässig verfolgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!