Tengo algunas radios en mi página y quiero hacer algo cuando la radio marcada cambie, sin embargo, el código no funciona en IE:
$('input:radio').change(...);
Y después de buscar en Google, la gente sugiere usar el clic en su lugar. Pero no funciona.
Este es el código de ejemplo:
<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>
Tampoco funciona en IE.
¿Entonces quiero saber qué está pasando?
También me temo que volverá a activar el evento de cambio si hago clic en una radio marcada.
ACTUALIZAR:
No puedo agregar comentario, por eso respondo aquí.
Yo uso IE8 y el enlace que me dio Furqan tampoco funciona en IE8. No se por que...
jquery
radio-button
hguser
fuente
fuente
Respuestas:
Este código funcionó para mí:
$(function(){ $('input:radio').change(function(){ alert('changed'); }); });
http://jsfiddle.net/3q29L/
fuente
$('input[type=radio]')
en su lugar (consulte "notas adicionales": api.jquery.com/radio-selector )Puede especificar el atributo de nombre de la siguiente manera:
$( 'input[name="testGroup"]:radio' ).change(
fuente
También funciona para mí, aquí hay una mejor solución:
demo de violín
<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>
Debe asegurarse de inicializar por
jquery
encima de todas las demás funciones de importación y JavaScript. Porque$
es unajquery
función. Incluso$(function(){ <code> });
no comprobará
jquery
inicializado o no. Se asegurará de que<code>
se ejecute solo después de que se inicialicen todos los javascripts.fuente
Tratar
$(document).ready(
en vez de
$('document').ready(
o puedes usar una forma abreviada
$(function(){ });
fuente
$( 'input[name="testGroup"]:radio' ).on('change', function(e) { console.log(e.type); return false; });
Esta sintaxis es un poco más flexible para manejar eventos. No sólo puede observar "cambios", sino que también aquí se pueden controlar otros tipos de eventos mediante el uso de un solo controlador de eventos. Puede hacer esto pasando la lista de eventos como argumentos al primer parámetro. Ver jQuery en
En segundo lugar, .change () es un atajo para .on ("change", handler). Vea aquí . Prefiero usar .on () en lugar de .change porque tengo más control sobre los eventos.
Por último, simplemente estoy mostrando una sintaxis alternativa para adjuntar el evento al elemento.
fuente