Mam na stronie jakieś radia i chcę coś zrobić jak zmieni się sprawdzone radio, jednak kod nie działa w IE:
$('input:radio').change(...);
Po wygooglowaniu ludzie sugerują zamiast tego użycie kliknięcia . Ale to nie działa.
Oto przykładowy kod:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$('document').ready(
function(){
$('input:radio').click(
function(){
alert('changed');
}
);
}
);
</script>
</head>
<body>
<input type="radio" name="testGroup" id="test1" />test1<br/>
<input type="radio" name="testGroup" id="test2" />test2<br/>
<input type="radio" name="testGroup" id="test3" />test3</br>
</body>
</html>
Nie działa również w IE.
Więc chcę wiedzieć, co się dzieje?
Obawiam się też, czy ponownie wyzwoli zdarzenie zmiany, jeśli kliknę zaznaczone radio?
AKTUALIZACJA:
Nie mogę dodać komentarza, więc odpowiadam tutaj.
Używam IE8 i link, który daje mi Furqan, również nie działa w IE8. Nie wiem dlaczego...
jquery
radio-button
hguser
źródło
źródło
Odpowiedzi:
Ten kod zadziałał dla mnie:
$(function(){ $('input:radio').change(function(){ alert('changed'); }); });
http://jsfiddle.net/3q29L/
źródło
$('input[type=radio]')
zamiast tego (patrz „uwagi dodatkowe”: api.jquery.com/radio-selector )Możesz określić atrybut nazwy, jak poniżej:
$( 'input[name="testGroup"]:radio' ).change(
źródło
U mnie też działa, tutaj jest lepsze rozwiązanie:
fiddle demo
<form id="myForm"> <input type="radio" name="radioName" value="1" />one<br /> <input type="radio" name="radioName" value="2" />two </form> <script> $('#myForm input[type=radio]').change(function() { alert(this.value); }); </script>
Musisz upewnić się, że zainicjowałeś
jquery
przede wszystkim inne funkcje importu i javascript. Ponieważ$
jestjquery
funkcją. Parzysty$(function(){ <code> });
nie sprawdzi
jquery
zainicjowanych lub nie. Zapewni to, że<code>
będzie działać dopiero po zainicjowaniu wszystkich skryptów javascriptu.źródło
Próbować
$(document).ready(
zamiast
$('document').ready(
lub możesz użyć formy skróconej
$(function(){ });
źródło
$( 'input[name="testGroup"]:radio' ).on('change', function(e) { console.log(e.type); return false; });
Ta składnia jest nieco bardziej elastyczna w obsłudze zdarzeń. Nie tylko można obserwować „zmiany”, ale także można tu kontrolować inne typy zdarzeń za pomocą jednego modułu obsługi zdarzeń. Możesz to zrobić, przekazując listę zdarzeń jako argumenty do pierwszego parametru. Zobacz jQuery On
Po drugie, .change () jest skrótem do .on ("zmiana", obsługa). Zobacz tutaj . Wolę używać .on () zamiast .change, ponieważ mam większą kontrolę nad zdarzeniami.
Na koniec po prostu pokazuję alternatywną składnię, aby dołączyć zdarzenie do elementu.
źródło