Come controllare un pulsante di opzione con jQuery?


890

Provo a controllare un pulsante di opzione con jQuery. Ecco il mio codice:

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

E il JavaScript:

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

Non funziona:

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

Non funziona:

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

Non funziona:

Hai un'altra idea? Cosa mi sto perdendo?


1
Grazie per le tue risposte! Ho trovato il problema. In realtà, i due primi modi per farlo stanno funzionando. Il punto è che ho usato jqueryUI per trasformare un set di 3 pulsanti di opzione in un pulsante impostato con questo codice: jQuery ("# ​​type"). Buttonset (); ma apportare questa modifica prima di controllare la radio stava rompendo il set radio (non so perché). Alla fine, ho inserito la chiamata del set di pulsanti dopo aver controllato la radio e funziona in modo impeccabile.
Alexis,

Usa $ ("input: radio [value = '2']"). Prop ('controllato', vero); link qui freakyjolly.com/…
Codice spia

Risposte:


1469

Per versioni di jQuery uguali o superiori (> =) 1.6, utilizzare:

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

Per le versioni precedenti a (<) 1.6, utilizzare:

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

Suggerimento: potresti anche voler chiamare click()o change()sul pulsante di opzione in seguito. Vedi i commenti per maggiori informazioni.


80
In jQuery 1.9 o versioni successive questa soluzione non funzionerà. Usa $ ("# radio_1"). Prop ("controllato", vero); anziché.
installero il

12
@Installero in realtà, prepè corretto dall'1.6 e richiesto dall'1.9 .
John Dvorak,

43
È utile aggiungere .change()fino alla fine per attivare qualsiasi altro evento sulla pagina.
Foxinni,

13
Potrebbe essere saggio riorganizzare questa risposta in modo che .propsia chiaramente la risposta corretta e il .attrmetodo sia una nota per jQuery <1.6.
Patrick,

22
Se si desidera che gli altri pulsanti di opzione nel gruppo radio per aggiornare correttamente l'uso$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau

256

Prova questo.

In questo esempio, lo sto prendendo di mira con il suo nome e valore di input

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

Buono a sapersi: in caso di valore di più parole, funzionerà anche a causa degli apostrofi.


5
Questo è probabilmente il modo migliore, gli altri hanno la tendenza a rimanere lì rendendo la funzione inutile la seconda volta mentre funziona esattamente come previsto
Roy Toledo

Ho scoperto che, poiché ce n'è solo uno che può essere selezionato, $ ('input [name = "type"]: checked'). Val () è anche bello.
Huggie,

Per favore, elaborato. L'idea generale è quella di controllare un pulsante di opzione che lo indirizzi con i suoi attributi - nome e facoltativamente, valore. Non sono sicuro di cosa stai cercando di ottenere con questo, dal momento che ci sono solo gli attributi name e: checked pseudo selector usato. E stai recuperando anche val, il che è piuttosto confuso. Grazie
Vladimir Djuricic il

2
Stavo per aggiungere un "id" a tutte le mie radio, ma questo metodo ha funzionato perfettamente. Ma tieni presente che quando il tuo valore è composto da più parole (dì "colore viola"), dovrai includere le virgolette appropriate: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao,

3
Molto meglio della risposta selezionata! Esattamente quello che stavo cercando. Questo è generico, mentre la risposta selezionata è specifica. Fantastico, grazie.
GarbageGigo

96

Un'altra funzione prop () aggiunta in jQuery 1.6, che ha lo stesso scopo.

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

13
l' attr('checked', true)ha smesso di funzionare per me con jQuery 1.9, questa è la soluzione!
Pascal,

1
sembra che prop("checked", true)funzioni, attr('checked', 'checked')no
Tomasz Kuter il

@TomaszKuter Consiglio di usare prop () perché la proprietà DOM selezionata è quella che dovrebbe influenzare il comportamento - ma è strano - in questo violino ( jsfiddle.net/KRXeV ) attr('checked', 'checked')funziona davvero x)
jave.web


81

Opzione breve e di facile lettura:

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

Restituisce vero o falso, quindi puoi usarlo nell'istruzione "if".


5
Grazie! Questo è quello che stavo cercando, ma (FYI) l'OP stava chiedendo come impostare il pulsante di opzione, non ottenere il valore. (La parola "controllo" ha reso la domanda confusa.)
Bampfer

31

Prova questo.

Per controllare il pulsante di opzione utilizzando Valore, utilizzare questo.

$('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');

Per controllare il pulsante di opzione utilizzando ID, utilizzare questo.

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

O

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


13

La $.propstrada è migliore:

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

e puoi provarlo come segue:

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

Devi fare

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

Questo è l'attributo HTML


7

Se la proprietà namenon funziona, non dimenticare che idesiste ancora. Questa risposta è per le persone che vogliono indirizzare il idqui come fai.

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

Perché la proprietà namenon funziona per me. Assicurati di non circondare idename con virgolette doppie / singole.

Saluti!


7

Sì, ha funzionato per me come un modo:

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

6

Prova questo

$(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 risposta più popolare e accettata ignora l'attivazione dell'evento appropriato nonostante i commenti. Assicurati di invocare .change() , altrimenti tutti i binding "on change" ignoreranno questo 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

Ottieni valore:

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

Valore impostato:

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

Pulsante di opzione Fare clic su Aggiungi attr selezionato:

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

5

Dovremmo dire che è un radiopulsante, quindi prova con il seguente codice.

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

5

Nel caso in cui qualcuno stia cercando di raggiungere questo obiettivo durante l'utilizzo dell'interfaccia utente jQuery, dovrai anche aggiornare l'oggetto della casella di controllo dell'interfaccia utente per riflettere il valore aggiornato:

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

4

Io uso questo codice:

Mi dispiace per l'inglese.

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

Prova questo con l'esempio

<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);questo non funzionerà. Come menzionato dall'OP
JohnP,

2
Spiega il codice nelle risposte e leggi la domanda (questo è stato provato)
SomeKittens

2

Ho ottenuto alcuni esempi correlati da migliorare, che ne dici se voglio aggiungere una nuova condizione, diciamo, se voglio che la combinazione di colori venga nascosta dopo aver fatto clic sul valore di stato del progetto tranne Pavers e Lastre di pavimentazione.

L'esempio è qui:

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

Inoltre, puoi verificare se l'elemento è selezionato o meno:

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

Puoi controllare l'elemento non selezionato:

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

Puoi anche deselezionare in questo modo:

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

Puoi controllare il pulsante di opzione:

Per versioni di jQuery uguali o superiori (> =) 1.6, utilizzare:

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

Per le versioni precedenti a (<) 1.6, utilizzare:

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

2

Ho usato jquery-1.11.3.js

Abilita e disabilita di base

Suggerimenti 1: (Tipo di pulsante di opzione comune Disabilita e Abilita)

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

Suggerimenti 2: (selettore ID utilizzando 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);

Suggerimenti 3: (Selettore di classe utilizzando prop () o arrt ())

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

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

ALTRI SUGGERIMENTI

$("#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

Usa prop () mehtod

inserisci qui la descrizione dell'immagine

Link alla fonte

<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

prova questo

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

se selezionato restituisce True se non selezionato restituisceFalse

jQuery v1.10.1

1

Alcune volte sopra le soluzioni non funzionano, quindi puoi provare di seguito:

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

Un altro modo in cui puoi provare è:

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

1
Uniform è un plugin jQuery che rende i moduli più carini, ma lo fa aggiungendo elementi extra. Ogni volta che aggiorno il valore verificato, lo stato dell'elemento aggiuntivo non viene aggiornato, portando a un input invisibile che non viene verificato, ma con un elemento di sfondo visibile che sembra verificato. jQuery.uniform.update()è la soluzione!
Denilson Sá Maia,

1

Prova questo:

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

Questo non funzionerà senza includere il file per il checkboxradioplugin, il che è inutile quando puoi semplicemente usare le funzioni integrate di jQuery per ottenere questo risultato (vedi risposta accettata).
Nathan,

1

Ho solo un problema simile, una soluzione semplice è semplicemente usare:

.click()

Qualsiasi altra soluzione funzionerà se si aggiorna la radio dopo aver chiamato la funzione.


1
call click a volte è un mal di testa in ie9
Astolfo Hoscher,

1

attr accetta due stringhe.

Il modo corretto è:

jQuery("#radio_1").attr('checked', 'true');
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.