Como verificar um botão de opção com jQuery?

890

Eu tento verificar um botão de opção com jQuery. Aqui está o meu 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>

E o JavaScript:

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

Não funciona:

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

Não funciona:

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

Não funciona:

Você tem outra idéia? o que estou perdendo?

Alexis
fonte
1
Obrigado por suas respostas! Eu encontrei o problema Na verdade, as duas primeiras maneiras de fazer isso estão funcionando. A questão é que usei o jqueryUI para transformar um conjunto de 3 botões de opção em um conjunto de botões com este código: jQuery ("# ​​type"). Buttonset (); mas fazer essa alteração antes de verificar se o rádio estava quebrando o aparelho de rádio (não sei por quê). Finalmente, toquei no botão após verificar o rádio e ele funciona impecavelmente.
Alexis #
Use $ ("input: radio [value = '2']"). Prop ('marcado', verdadeiro); link aqui freakyjolly.com/…
Code Spy

Respostas:

1469

Para versões do jQuery iguais ou superiores a (> =) 1.6, use:

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

Para versões anteriores a (<) 1.6, use:

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

Dica: Você também pode ligar click()ou change()pressionar o botão de opção depois. Veja os comentários para mais informações.

Mike Thomsen
fonte
80
No jQuery 1.9 ou superior, esta solução não funcionará. Use $ ("# radio_1"). Prop ("marcado", verdadeiro); em vez de.
Installer
12
O @Installero, na verdade, prepestá correto desde 1.6 e necessário desde 1.9.
John Dvorak
43
É útil adicionar .change()ao final para acionar outros eventos na página.
Foxinni
13
Pode ser prudente reorganizar esta resposta para que esta .propseja claramente a resposta correta e o .attrmétodo seja uma observação para o jQuery <1.6.
227 Patrick Patrick
22
Se você quer que os outros botões de opção no grupo de rádio para atualizar corretamente o uso$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau
256

Tente isso.

Neste exemplo, eu estou segmentando-o com seu nome e valor de entrada

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

É bom saber: no caso de valor com várias palavras, ele também funcionará por causa de apóstrofes.

Vladimir Djuricic
fonte
5
Esta é provavelmente a melhor maneira, os outros têm uma tendência a ficar lá fazendo a função inútil a segunda vez Enquanto isso funciona apenas como esperado
Roy Toledo
Descobrimos que, como existe apenas um que pode ser selecionado, $ ('input [name = "type"]: selected'). Val () também é bom.
huggie
Por favor elabore. A idéia geral é verificar um botão de opção endereçando-o com seus atributos - nome e, opcionalmente, valor. Não tenho certeza do que você está tentando fazer com isso, já que existem apenas o atributo name e o pseudo-seletor marcado usado. E você também está recuperando val, o que é bastante confuso. Obrigado
Vladimir Djuricic
2
Eu estava prestes a adicionar um "id" a todos os meus rádios, mas esse método funcionou perfeitamente. Mas tenha em mente que quando o seu valor é multi-palavra (diga "cor roxa"), você vai precisar incluir citações apropriadas: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao
3
Muito melhor que a resposta selecionada! Exatamente o que eu estava procurando. Isso é genérico, enquanto a resposta selecionada é específica. Incrível, obrigado.
GarbageGigo
96

Mais uma função prop () adicionada no jQuery 1.6, que serve ao mesmo propósito.

$("#radio_1").prop("checked", true); 
Umesh Patil
fonte
13
o attr('checked', true)parou de trabalhar para mim com jQuery 1.9, esta é a solução!
Pascal
1
parece que prop("checked", true)está funcionando, attr('checked', 'checked')não funciona
Tomasz Kuter
@TomaszKuter eu recomendo usar prop () porque DOM propriedade checked é o que deve afetar o comportamento -, mas a sua estranha - neste violino ( jsfiddle.net/KRXeV ) attr('checked', 'checked')realmente funciona x)
jave.web
aqui está uma boa desambiguação stackoverflow.com/questions/5874652/prop-vs-attr
code_monk
81

Opção curta e fácil de ler:

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

Ele retorna true ou false, para que você possa usá-lo na instrução "if".

Karbaman
fonte
5
Obrigado! Era isso que eu estava procurando, mas (FYI) o OP estava perguntando como DEFINIR o botão de opção, não obtendo o valor. (A palavra "cheque" fez a pergunta confuso.)
Bampfer
31

Tente isso.

Para verificar o botão de opção usando Valor, use isso.

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

Ou

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

Ou

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

Para verificar o botão de opção usando ID, use-o.

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

Ou

$('#radio_1').prop('checked','checked');
Lakshmana Kumar
fonte
14

Tente isto:

$("input[name=type]").val(['1']);

http://jsfiddle.net/nwo706xw/

user4457035
fonte
Importante .val(['1'])não.val('1')
Bob Stein
13

O $.propcaminho é melhor:

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

e você pode testá-lo da seguinte maneira:

$(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();
    });        
});
Amin Saqi
fonte
9

Você tem que fazer

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

Esse é o atributo HTML

JohnP
fonte
7

Se a propriedade namenão funcionar, não esqueça que idainda existe. Esta resposta é para pessoas que desejam segmentar o idaqui como você faz.

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

Porque a propriedade namenão funciona para mim. Certifique-se de não cercar ide namecom aspas duplas / simples.

Felicidades!

Anjana Silva
fonte
7

Sim, funcionou para mim como uma maneira:

$("#radio_1").attr('checked', 'checked');
Anjan Kant
fonte
6

Tente isto

$(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
        }
    });
});
Jordan Jelinek
fonte
6

Surpreendentemente, a resposta mais popular e aceita ignora o acionamento do evento apropriado, apesar dos comentários. Certifique-se de chamar .change() , caso contrário, todas as ligações "em mudança" ignorarão esse evento.

$("#radio_1").prop("checked", true).change();
apatsekin
fonte
5
$("input[name=inputname]:radio").click(function() {
    if($(this).attr("value")=="yes") {
        $(".inputclassname").show();
    }
    if($(this).attr("value")=="no") {
        $(".inputclassname").hide();
    }
});
Eray
fonte
5

Obter valor:

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

Definir valor:

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

Botão de opção clique em adicionar atributo marcado:

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

Devemos querer dizer que é um radiobotão, então tente o seguinte código.

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

Caso alguém esteja tentando fazer isso enquanto estiver usando a interface do usuário do jQuery, também será necessário atualizar o objeto da caixa de seleção da interface do usuário para refletir o valor atualizado:

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

Eu uso este código:

Sinto muito pelo 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>

volitilov
fonte
4

Tente isso com exemplo

<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>
saroj
fonte
3

Tente isto

var isChecked = $("#radio_1")[0].checked;
user2190046
fonte
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)
});
MadhaviLatha Bathini
fonte
2
$("#radio_1").attr('checked', true);
//or
$("#radio_1").attr('checked', 'checked');
dominicbri7
fonte
2
$("#radio_1").attr('checked', true);isso não vai funcionar. Conforme mencionado pelo OP
JohnP 14/04
2
Por favor, explique o código em suas respostas, e ler a pergunta (este foi tentado)
SomeKittens
2

Eu tenho um exemplo relacionado a ser aprimorado, que tal se eu quiser adicionar uma nova condição, digamos, se eu quiser que o esquema de cores fique oculto depois de clicar no valor Status do projeto, exceto Pavers e Pavimentação.

O exemplo está aqui:

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

azim hamdan
fonte
2

Além disso, você pode verificar se o elemento está marcado ou não:

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

Você pode verificar se há um elemento desmarcado:

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

Você também pode desmarcar desta maneira:

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

Você pode verificar o botão de opção:

Para versões do jQuery iguais ou superiores a (> =) 1.6, use:

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

Para versões anteriores a (<) 1.6, use:

$("#radio_1").attr('checked', 'checked');
Majedur Rahaman
fonte
2

Eu usei o jquery-1.11.3.js

Ativar e desativar básico

Dicas 1: (Tipo de botão de opção comum Desativar e ativar)

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

Dicas 2: (seletor de ID Usando prop () ou 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);

Dicas 3: (Seletor de classe Usando prop () ou arrt ())

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

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

OUTRAS DICAS

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

Use prop () mehtod

insira a descrição da imagem aqui

Link de origem

<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>
Code Spy
fonte
1

tente isso

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

se marcado retorna True se não marcado retornaFalse

jQuery v1.10.1
PST
fonte
1

Algumas vezes as soluções acima não funcionam, então você pode tentar abaixo:

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

Outra maneira de tentar é:

jQuery("input:radio[name=yourElementName]:nth(0)").attr('checked',true);
Pankaj Bhagwat
fonte
1
Uniform é um plugin jQuery que torna os formulários mais bonitos, mas o faz adicionando elementos extras. Sempre que eu atualizo o valor verificado, o estado extra do elemento não é atualizado, levando a uma entrada invisível que não está marcada, mas com um elemento de plano de fundo visível que parece verificado. jQuery.uniform.update()é a solução!
Denilson Sá Maia
1

Tente isto:

$(document).ready(function(){
  $("#Id").prop("checked", true).checkboxradio('refresh');
});
user3721473
fonte
Isso não funcionará sem a inclusão do arquivo para o checkboxradioplug - in, o que é inútil quando você pode usar as funções internas do jQuery para fazer isso (consulte a resposta aceita).
Nathan
1

Eu só tenho um problema semelhante, uma solução simples é apenas usar:

.click()

Qualquer outra solução funcionará se você atualizar o rádio após chamar a função.

user3148673
fonte
1
às vezes, clique em chamada é uma dor de cabeça no ie9 #
Astolfo Hoscher 27/10
1

attr aceita duas strings.

A maneira correta é:

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