¿Cómo verificar un botón de radio con jQuery?


890

Intento marcar un botón de radio con jQuery. Aquí está mi código:

<form>
    <div id='type'>
        <input type='radio' id='radio_1' name='type' value='1' />
        <input type='radio' id='radio_2' name='type' value='2' />
        <input type='radio' id='radio_3' name='type' value='3' /> 
    </div>
</form>

Y el JavaScript:

jQuery("#radio_1").attr('checked', true);

No funciona

jQuery("input[value='1']").attr('checked', true);

No funciona

jQuery('input:radio[name="type"]').filter('[value="1"]').attr('checked', true);

No funciona

¿Tienes otra idea? ¿Qué me estoy perdiendo?


1
Gracias por sus respuestas! Encontré el problema. En realidad, las dos primeras formas de hacerlo están funcionando. El punto es que usé jqueryUI para transformar un conjunto de 3 botones de radio en un conjunto de botones con este código: jQuery ("# ​​type"). Buttonset (); pero hacer este cambio antes de verificar la radio estaba rompiendo el aparato de radio (no sé por qué). Finalmente, puse la llamada del conjunto de botones después de revisar la radio y funciona impecablemente.
Alexis

Use $ ("input: radio [value = '2']"). Prop ('marcado', verdadero); enlace aquí freakyjolly.com/…
Code Spy

Respuestas:


1469

Para versiones de jQuery iguales o superiores (> =) 1.6, use:

$("#radio_1").prop("checked", true);

Para versiones anteriores a (<) 1.6, use:

$("#radio_1").attr('checked', 'checked');

Consejo: También puede llamar click()o llamar change()al botón de radio después. Ver comentarios para más información.


80
En jQuery 1.9 o superior, esta solución no funcionará. Use $ ("# radio_1"). Prop ("marcado", verdadero); en lugar.
installero

12
@Installero en realidad, prepes correcto desde 1.6 y requerido desde 1.9.
John Dvorak

43
Es útil agregar .change()al final para activar cualquier otro evento en la página.
Foxinni

13
Puede ser conveniente reorganizar esta respuesta para que .propsea ​​claramente la respuesta correcta y el .attrmétodo sea una nota para jQuery <1.6.
Patrick

22
Si desea que los otros botones de radio del grupo de radio se actualicen correctamente, use$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau

256

Prueba esto.

En este ejemplo, lo estoy apuntando con su nombre y valor de entrada

$("input[name=background][value='some value']").prop("checked",true);

Es bueno saberlo: en caso de valor de varias palabras, también funcionará debido a los apóstrofes.


55
Esta es probablemente la mejor manera, los otros tienden a quedarse allí, lo que hace que la función sea inútil la segunda vez, mientras que funciona como se esperaba
Roy Toledo

Descubrí que dado que solo hay uno que se puede seleccionar, $ ('input [name = "type"]: check'). Val () también es bueno.
huggie

Por favor elabora. La idea general es marcar un botón de radio que lo aborde con sus atributos: nombre y, opcionalmente, valor. No estoy seguro de qué está tratando de lograr con esto, ya que solo se utilizan el atributo de nombre y: el pseudo selector seleccionado. Y también está recuperando val, lo cual es bastante confuso. Gracias
Vladimir Djuricic

2
Estaba a punto de agregar un "id" a todas mis radios, pero este método funcionó a la perfección. Pero tenga en cuenta que cuando su valor sea de varias palabras (por ejemplo, "color púrpura"), deberá incluir citas apropiadas: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao

3
¡Mucho mejor que la respuesta seleccionada! Exactamente lo que estaba buscando. Esto es genérico, mientras que la respuesta seleccionada es específica. Genial gracias.
GarbageGigo

96

Una función más prop () que se agrega en jQuery 1.6, que sirve para el mismo propósito.

$("#radio_1").prop("checked", true); 

13
la attr('checked', true)dejó de funcionar para mí con jQuery 1.9, esta es la solución!
Pascal

1
parece que prop("checked", true)está funcionando, attr('checked', 'checked')no
Tomasz Kuter

@TomaszKuter Recomiendo usar prop () porque la propiedad DOM marcada es la que debería afectar el comportamiento, pero es extraño, en este violín ( jsfiddle.net/KRXeV ) attr('checked', 'checked')realmente funciona x)
jave.web

aquí hay una buena desambiguación stackoverflow.com/questions/5874652/prop-vs-attr
code_monk

81

Opción corta y fácil de leer:

$("#radio_1").is(":checked")

Devuelve verdadero o falso, por lo que puede usarlo en la declaración "if".


55
¡Gracias! Esto es lo que estaba buscando, pero (FYI) el OP preguntaba cómo CONFIGURAR el botón de radio, no obtener el valor. (La palabra "cheque" hizo la pregunta confusa.)
Bampfer

31

Prueba esto.

Para marcar el botón de radio usando Value, use esto.

$('input[name=type][value=2]').attr('checked', true); 

O

$('input[name=type][value=2]').attr('checked', 'checked');

O

$('input[name=type][value=2]').prop('checked', 'checked');

Para marcar el botón de radio usando la ID, use esto.

$('#radio_1').attr('checked','checked');

O

$('#radio_1').prop('checked','checked');


13

El $.propcamino es mejor:

$(document).ready(function () {                            
    $("#radio_1").prop('checked', true);        
});

y puedes probarlo de la siguiente manera:

$(document).ready(function () {                            
    $("#radio_1, #radio_2", "#radio_3").change(function () {
        if ($("#radio_1").is(":checked")) {
            $('#div1').show();
        }
        else if ($("#radio_2").is(":checked")) {
            $('#div2').show();
        }
        else 
            $('#div3').show();
    });        
});

9

Tu tienes que hacer

jQuery("#radio_1").attr('checked', 'checked');

Ese es el atributo HTML


7

Si la propiedad nameno funciona, no olvide que idtodavía existe. Esta respuesta es para las personas que quieren apuntar idaquí como lo haces.

$('input[id=element_id][value=element_value]').prop("checked",true);

Porque la propiedad nameno me funciona. Asegúrate de no rodear idyname con comillas dobles / simples.

¡Salud!


7

Sí, funcionó para mí de una manera:

$("#radio_1").attr('checked', 'checked');

6

Prueba esto

$(document).ready(function(){
    $("input[name='type']:radio").change(function(){
        if($(this).val() == '1')
        {
          // do something
        }
        else if($(this).val() == '2')
        {
          // do something
        }
        else if($(this).val() == '3')
        {
          // do something
        }
    });
});

6

Sorprendentemente, la respuesta más popular y aceptada ignora la activación del evento apropiado a pesar de los comentarios. Asegúrese de invocar .change() , de lo contrario, todos los enlaces "en cambio" ignorarán este evento.

$("#radio_1").prop("checked", true).change();

5
$("input[name=inputname]:radio").click(function() {
    if($(this).attr("value")=="yes") {
        $(".inputclassname").show();
    }
    if($(this).attr("value")=="no") {
        $(".inputclassname").hide();
    }
});

5

Obtenga valor:

$("[name='type'][checked]").attr("value");

Valor ajustado:

$(this).attr({"checked":true}).prop({"checked":true});

Botón de radio, haga clic en Agregar atributo marcado:

$("[name='type']").click(function(){
  $("[name='type']").removeAttr("checked");
  $(this).attr({"checked":true}).prop({"checked":true});
});

5

Deberíamos querer decir que es un radiobotón, así que intente con el siguiente código

$("input[type='radio'][name='userRadionButtonName']").prop('checked', true);

5

En caso de que alguien esté tratando de lograr esto mientras usa jQuery UI, también deberá actualizar el objeto de casilla de verificación UI para reflejar el valor actualizado:

$("#option2").prop("checked", true); // Check id option2
$("input[name='radio_options']").button("refresh"); // Refresh button set

4

Yo uso este código:

Perdón por el inglés.

var $j = jQuery.noConflict();

$j(function() {
    // add handler
    $j('#radio-1, #radio-2').click(function(){

        // find all checked and cancel checked
        $j('input:radio:checked').prop('checked', false);

        // this radio add cheked
        $j(this).prop('checked', true);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<fieldset class="section">
  <legend>Radio buttons</legend>
  <label>
    <input type="radio" id="radio-1" checked>
    Option one is this and that&mdash;be sure to include why it's great
  </label>
  <br>
  <label>
    <input type="radio" id="radio-2">
    Option two can be something else
  </label>
</fieldset>


4

Prueba esto con el ejemplo

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myForm">
<input type="radio" name="radio" value="first"/> 1 <br/>
<input type="radio" name="radio" value="second"/> 2 <br/>
</form>


<script>
$(document).ready(function () {
    $('#myForm').on('click', function () {
        var value = $("[name=radio]:checked").val();

        alert(value);
    })
});
</script>


3
function rbcitiSelction(e) {
     debugger
    $('#trpersonalemail').hide();
    $('#trcitiemail').show();
}

function rbpersSelction(e) {
    var personalEmail = $(e).val();
    $('#trpersonalemail').show();
    $('#trcitiemail').hide();
}

$(function() {  
    $("#citiEmail").prop("checked", true)
});

2
$("#radio_1").attr('checked', true);
//or
$("#radio_1").attr('checked', 'checked');

2
$("#radio_1").attr('checked', true);Esto no funcionará. Según lo mencionado por el OP
JohnP

2
Explique el código en sus respuestas y lea la pregunta (esto se ha intentado)
SomeKittens

2

Obtuve algunos ejemplos relacionados para mejorar, ¿qué tal si quiero agregar una nueva condición, digamos, si quiero que se oculte la combinación de colores después de hacer clic en el valor de Estado del proyecto, excepto Pavimentadoras y Losas de pavimento?

El ejemplo está aquí:

$(function () {
    $('#CostAnalysis input[type=radio]').click(function () {
        var value = $(this).val();

        if (value == "Supply & Lay") {
            $('#ul-suplay').empty();
            $('#ul-suplay').append('<fieldset data-role="controlgroup"> \

http://jsfiddle.net/m7hg2p94/4/


2

Además, puede verificar si el elemento está marcado o no:

if ($('.myCheckbox').attr('checked'))
{
   //do others stuff
}
else
{
   //do others stuff
}

Puede verificar el elemento sin marcar:

$('.myCheckbox').attr('checked',true) //Standards way

También puede desmarcar de esta manera:

$('.myCheckbox').removeAttr('checked')

Puede verificar el botón de radio:

Para versiones de jQuery iguales o superiores (> =) 1.6, use:

$("#radio_1").prop("checked", true);

Para versiones anteriores a (<) 1.6, use:

$("#radio_1").attr('checked', 'checked');

2

Solía jquery-1.11.3.js

Habilitar y deshabilitar básico

Consejos 1: (Tipo de botón de radio común Deshabilitar y habilitar)

$("input[type=radio]").attr('disabled', false);
$("input[type=radio]").attr('disabled', true); 

Consejos 2: (selector de ID con prop () o attr ())

$("#paytmradio").prop("checked", true);
$("#sbiradio").prop("checked", false);

jQuery("#paytmradio").attr('checked', 'checked'); // or true this won't work
jQuery("#sbiradio").attr('checked', false);

Consejos 3: (selector de clase con prop () o arrt ())

$(".paytm").prop("checked", true);
$(".sbi").prop("checked", false);

jQuery(".paytm").attr('checked', 'checked'); // or true
jQuery(".sbi").attr('checked', false);

OTROS CONSEJOS

$("#paytmradio").is(":checked")   // Checking is checked or not
$(':radio:not(:checked)').attr('disabled', true); // All not check radio button disabled

$('input[name=payment_type][value=1]').attr('checked', 'checked'); //input type via checked
 $("input:checked", "#paytmradio").val() // get the checked value

index.html

<div class="col-md-6">      
    <label class="control-label" for="paymenttype">Payment Type <span style="color:red">*</span></label>
    <div id="paymenttype" class="form-group" style="padding-top: inherit;">
        <label class="radio-inline" class="form-control"><input  type="radio" id="paytmradio"  class="paytm" name="paymenttype" value="1" onclick="document.getElementById('paymentFrm').action='paytmTest.php';">PayTM</label>
        <label class="radio-inline" class="form-control"><input  type="radio" id="sbiradio" class="sbi" name="paymenttype" value="2" onclick="document.getElementById('paymentFrm').action='sbiTest.php';">SBI ePAY</label>
    </div>
</div>

2

Utilice prop () mehtod

ingrese la descripción de la imagen aquí

Enlace fuente

<p>
    <h5>Radio Selection</h5>

    <label>
        <input type="radio" name="myRadio" value="1"> Option 1
    </label>
    <label>
        <input type="radio" name="myRadio" value="2"> Option 2
    </label>
    <label>
        <input type="radio" name="myRadio" value="3"> Option 3
    </label>
</p>

<p>
    <button>Check Radio Option 2</button>
</p>


<script>
    $(function () {

        $("button").click(function () {
            $("input:radio[value='2']").prop('checked',true);
        });

    });
</script>

1

prueba esto

 $("input:checked", "#radioButton").val()

si está marcado devuelve True si no está marcado devuelveFalse

jQuery v1.10.1

1

Algunas veces las soluciones anteriores no funcionan, puede probar a continuación:

jQuery.uniform.update(jQuery("#yourElementID").attr('checked',true));
jQuery.uniform.update(jQuery("#yourElementID").attr('checked',false));

Otra forma de probar es:

jQuery("input:radio[name=yourElementName]:nth(0)").attr('checked',true);

1
Uniform es un complemento de jQuery que hace que los formularios sean más bonitos, pero lo hace agregando elementos adicionales. Cada vez que actualizo el valor verificado, el estado del elemento adicional no se actualiza, lo que lleva a una entrada invisible que no se verifica, pero con un elemento de fondo visible que parece verificado. jQuery.uniform.update()es la solucion!
Denilson Sá Maia

1

Prueba esto:

$(document).ready(function(){
  $("#Id").prop("checked", true).checkboxradio('refresh');
});

Esto no funcionará sin incluir el archivo para el checkboxradiocomplemento, lo cual no tiene sentido cuando solo puede usar las funciones integradas de jQuery para lograr esto (vea la respuesta aceptada).
Nathan

1

Acabo de tener un problema similar, una solución simple es simplemente usar:

.click()

Cualquier otra solución funcionará si actualiza la radio después de llamar a la función.


1
el clic de llamada a veces es un dolor de cabeza en ie9
Astolfo Hoscher

1

attr acepta dos cadenas.

La forma correcta es:

jQuery("#radio_1").attr('checked', 'true');
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.