Ich suche eine allgemeine Lösung dafür.
Betrachten Sie 2 gleichnamige Funkeingänge. Bei der Übermittlung bestimmt der geprüfte Wert den Wert, der mit dem Formular gesendet wird:
<input type="radio" name="myRadios" onchange="handleChange1();" value="1" />
<input type="radio" name="myRadios" onchange="handleChange2();" value="2" />
Das Änderungsereignis wird nicht ausgelöst, wenn ein Optionsfeld deaktiviert ist. Wenn also das Radio mit dem Wert = "1" bereits ausgewählt ist und der Benutzer das zweite auswählt, wird handleChange1 () nicht ausgeführt. Dies stellt (für mich jedenfalls) ein Problem dar, da es kein Ereignis gibt, bei dem ich diese Abwahl abfangen kann.
Was ich möchte, ist eine Problemumgehung für das Ereignis onchange für den Wert der Kontrollkästchengruppe oder alternativ ein Ereignis oncheck, das nicht nur erkennt, wenn ein Radio aktiviert ist, sondern auch, wenn es deaktiviert ist.
Ich bin sicher, einige von Ihnen sind schon einmal auf dieses Problem gestoßen. Was sind einige Problemumgehungen (oder idealerweise der richtige Weg, um damit umzugehen)? Ich möchte nur das Änderungsereignis abfangen, auf das zuvor überprüfte Radio sowie auf das neu überprüfte Radio zugreifen.
PS
onclick scheint ein besseres (browserübergreifendes) Ereignis zu sein, um anzuzeigen, wann ein Radio überprüft wird, aber das nicht überprüfte Problem wird immer noch nicht gelöst.
Ich nehme an, es ist sinnvoll, warum das Ändern eines Kontrollkästchentyps in einem solchen Fall funktioniert, da es den Wert ändert, den es beim Aktivieren oder Deaktivieren des Kontrollkästchens übermittelt. Ich wünschte, die Optionsfelder hätten sich eher wie die Änderung eines SELECT-Elements verhalten, aber was können Sie tun ...
myRadios
, um die Variable zu lesen,prev
die das aktuell ausgewählte Radio enthält. In jedem Klick-Handler wird ein Vergleich durchgeführt, um zu entscheiden, ob das angeklickte Radio mit dem darin gespeicherten identisch ist.prev
Wenn nicht, wird das aktuell angeklickte Radio dort gespeichert. Innerhalb des Klick-Handlers haben Sie Zugriff auf das zuvor ausgewählte:prev
und das aktuell ausgewählte Radio:this