haga clic o cambie el evento en la radio usando jquery


86

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...


1
¿Qué versión de IE estás usando para la prueba? Tu código me funciona en IE8. Tiene razón en que el evento se activará si hace clic en una radio marcada. Necesita realizar una verificación en su código para evitar esto.
kgiannakakis

funciona para mí, consulte el siguiente jsfiddle.net/NerXh
Furqan Hameedi

Respuestas:


111

Este código funcionó para mí:

$(function(){

    $('input:radio').change(function(){
        alert('changed');   
    });          

});

http://jsfiddle.net/3q29L/


4
Esto no funciona para mí cuando se apunta a una sola radio y seleccionar otra radio hace que la otra anule la selección.
Doug Amos

1
Excepto cuando el rendimiento es un problema en una página con muchos elementos. En cuyo caso, utilice $('input[type=radio]')en su lugar (consulte "notas adicionales": api.jquery.com/radio-selector )
jemmons

72

Puede especificar el atributo de nombre de la siguiente manera:

$( 'input[name="testGroup"]:radio' ).change(

8
Menos ambigüedad. Práctica mucho mejor. +1
Jacks_Gulch

14

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 jqueryencima de todas las demás funciones de importación y JavaScript. Porque $es una jqueryfunción. Incluso

$(function(){
 <code>
}); 

no comprobará jqueryinicializado o no. Se asegurará de que <code>se ejecute solo después de que se inicialicen todos los javascripts.


7

Tratar

$(document).ready(

en vez de

$('document').ready(

o puedes usar una forma abreviada

$(function(){
});

1

$( '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.


¿Cómo es esto efectivamente diferente de la respuesta de Iwao Nishida? ?
Todos los trabajadores son esenciales

es diferente porque no usa .change () sino .on () No hay razón para rechazar esta respuesta.
luis
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.