Około miesiąc temu pytanie Mitta pozostało bez odpowiedzi. Niestety, teraz mam taką samą sytuację.
http://api.jquery.com/change/#comment-133939395
Oto sytuacja: używam jQuery do przechwytywania zmian w przycisku opcji. Po wybraniu przycisku opcji włączam pole edycji. Gdy przycisk radiowy jest odznaczony, chciałbym, aby pole edycji zostało wyłączone.
Umożliwienie działa. Gdy wybieram inny przycisk opcji w grupie, change
zdarzenie nie jest uruchamiane. Czy ktoś wie, jak to naprawić?
<input type="radio" id="r1" name="someRadioGroup"/>
<script type="text/javascript">
$("#r1").change(function () {
if ($("#r1").attr("checked")) {
$('#r1edit:input').removeAttr('disabled');
}
else {
$('#r1edit:input').attr('disabled', true);
}
});
</script>
javascript
jquery
html
radio-button
antwarpes
źródło
źródło
id=r1
Odpowiedzi:
Wygląda na to, że
change()
funkcja jest wywoływana tylko wtedy, gdy zaznaczysz przycisk opcji, a nie gdy go odznaczysz. Rozwiązaniem, którego użyłem, jest powiązanie zdarzenia zmiany z każdym przyciskiem radiowym:Lub możesz nadać wszystkim przyciskom radiowym tę samą nazwę:
Oto działający przykład jsfiddle (zaktualizowany na podstawie komentarza Chrisa Portera).
Zgodnie z komentarzem @ Ray, powinieneś unikać używania imion zawierających
.
w nich nazwy . Te nazwy działają w jQuery 1.7.2, ale nie w innych wersjach ( np. Jsfiddle ).źródło
część jQuery
tutaj jest DEMO
źródło
.attr('checked')
na.prop('checked')
.Możesz powiązać się ze wszystkimi przyciskami radiowymi naraz według nazwy:
Przykład roboczy tutaj: http://jsfiddle.net/Ey4fa/
źródło
To zwykle działa dla mnie:
if ($("#r1").is(":checked")) {}
źródło
Mój problem był podobny i to zadziałało dla mnie:
źródło
Powiedzmy, że te przyciski opcji znajdują się wewnątrz a,
div
które ma identyfikatorradioButtons
i że przyciski opcji mają taką samą nazwę (na przykładcommonName
), a następnie:źródło
change
Zdarzenia nie strzelania na cofnięcie jest pożądane zachowanie. Powinieneś uruchomić selektor dla całej grupy radiowej, a nie tylko jednego przycisku opcji. Twoja grupa radiowa powinna mieć tę samą nazwę (z różnymi wartościami)Rozważ następujący kod:
Mam taki sam przypadek użycia jak twój, tj. Pokazanie pola wprowadzania danych po wybraniu określonego przycisku opcji. Gdyby zdarzenie zostało uruchomione również po usunięciu selekcji, za każdym razem otrzymywałbym 2 zdarzenia.
źródło
Ten sam problem, to działało dobrze:
źródło
Z Ajaxem pracowałem dla mnie:
HTML:
JavaScript:
I php:
źródło