Szukam uogólnionego rozwiązania tego problemu.
Rozważ 2 wejścia radiowe o tej samej nazwie. Po przesłaniu sprawdzany określa wartość wysyłaną z formularzem:
<input type="radio" name="myRadios" onchange="handleChange1();" value="1" />
<input type="radio" name="myRadios" onchange="handleChange2();" value="2" />
Zdarzenie zmiany nie jest uruchamiane, gdy przycisk opcji jest wyłączony. Jeśli więc radio o wartości = „1” jest już wybrane, a użytkownik wybierze drugie, uchwytChange1 () nie działa. To stanowi problem (dla mnie zresztą) polegający na tym, że nie ma zdarzenia, w którym mógłbym złapać to usunięcie zaznaczenia.
To, co chciałbym, to obejście zdarzenia onchange dla wartości grupy pól wyboru lub alternatywnie zdarzenie oncheck, które wykrywa nie tylko, gdy radio jest zaznaczone, ale także, gdy nie jest zaznaczone.
Jestem pewien, że niektórzy z was wcześniej napotkali ten problem. Jakie są obejścia (lub idealnie, jak to zrobić)? Chcę tylko złapać zdarzenie zmiany, uzyskać dostęp do wcześniej sprawdzonego radia, a także nowo sprawdzonego radia.
PS
onclick wydaje się lepszym zdarzeniem (przeglądarkowym) do wskazania, kiedy radio jest sprawdzane, ale nadal nie rozwiązuje problemu niezaznaczonego.
Podejrzewam, że ma sens, dlaczego onchange dla typu pola wyboru działa w takim przypadku, ponieważ zmienia wartość, którą przesyła, gdy go zaznaczasz lub odznaczasz. Chciałbym, żeby przyciski radiowe zachowywały się bardziej jak wymiana elementu SELECT, ale co możesz zrobić ...
myRadios
aby odczytać zmienną,prev
która zawiera aktualnie wybrane radio. W ramach każdej procedury obsługi kliknięć dokonuje się porównania, aby zdecydować, czy kliknięte radio jest takie samo, jak zapisane wprev
radiu, a jeśli nie, wówczas przechowywane w nim radio jest przechowywane. W module obsługi kliknięć masz dostęp do poprzednio wybranego:prev
i aktualnie wybranego radia:this