Bagaimana cara memeriksa tombol radio dengan jQuery?


890

Saya mencoba memeriksa tombol radio dengan jQuery. Ini kode saya:

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

Dan JavaScript:

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

Tidak bekerja:

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

Tidak bekerja:

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

Tidak bekerja:

Anda punya ide lain? Apa yang saya lewatkan?


1
Terima kasih atas tanggapan Anda! Saya menemukan masalahnya. Sebenarnya, dua cara pertama untuk melakukannya berhasil. Intinya adalah saya menggunakan jqueryUI untuk mengubah satu set 3 tombol radio menjadi satu set tombol dengan kode ini: jQuery ("# ​​type"). Buttonset (); tetapi melakukan perubahan ini sebelum memeriksa radio adalah merusak set radio (tidak tahu mengapa). Akhirnya, saya melakukan panggilan buttonset setelah memeriksa radio dan berfungsi dengan sempurna.
Alexis

Gunakan $ ("input: radio [value = '2']"). Prop ('dicentang', true); tautan di sini freakyjolly.com/...
Code Spy

Jawaban:


1469

Untuk versi jQuery yang sama atau lebih tinggi (> =) 1.6, gunakan:

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

Untuk versi sebelum (<) 1.6, gunakan:

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

Tip: Anda mungkin juga ingin memanggil click()atau change()tombol radio sesudahnya. Lihat komentar untuk info lebih lanjut.


80
Di jQuery 1.9 atau lebih tinggi solusi ini tidak akan berfungsi. Gunakan $ ("# radio_1"). Prop ("dicentang", true); sebagai gantinya.
installero

12
@Ineroero sebenarnya, prepsudah benar sejak 1.6, dan diperlukan sejak 1.9.
John Dvorak

43
Sangat membantu untuk menambahkan .change()hingga akhir untuk memicu peristiwa lain di halaman.
Foxinni

13
Mungkin bijaksana untuk mengatur ulang jawaban ini sehingga .propjelas jawaban yang benar dan .attrmetode ini adalah catatan untuk jQuery <1.6.
Patrick

22
Jika Anda ingin tombol radio lain dalam grup radio diperbarui dengan benar$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau

256

Coba ini.

Dalam contoh ini, saya menargetkannya dengan nama dan nilainya input

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

Baik untuk diketahui: dalam hal nilai multi-kata, ini akan berfungsi karena apostrof juga.


5
Ini mungkin cara terbaik, yang lain memiliki kecenderungan untuk tetap membuat fungsi tidak berguna untuk kedua kalinya sementara ini berfungsi seperti yang diharapkan
Roy Toledo

Mengetahui bahwa karena hanya ada satu yang dapat dipilih, $ ('input [name = "type"]: checked'). Val () juga bagus.
huggie

Tolong, jelaskan. Gagasan umum adalah memeriksa tombol radio yang mengatasinya dengan atributnya - nama dan nilai opsional. Saya tidak yakin apa yang ingin Anda capai dengan ini, karena hanya ada atribut nama dan: selektor pseudo diperiksa digunakan. Dan Anda mengambil val juga, yang agak membingungkan. Terima kasih
Vladimir Djuricic

2
Saya baru saja akan menambahkan "id" ke semua radio saya, tetapi metode ini bekerja dengan sempurna. Namun perlu diingat bahwa ketika nilai Anda multi-kata (katakanlah "warna ungu"), Anda harus menyertakan kutipan yang sesuai: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao

3
Jauh lebih baik daripada jawaban yang dipilih! Persis apa yang saya cari. Ini generik, sedangkan jawaban yang dipilih spesifik. Keren terima kasih.
GarbageGigo

96

Satu lagi fungsi prop () yang ditambahkan di jQuery 1.6, yang memiliki tujuan yang sama.

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

13
yang attr('checked', true)berhenti bekerja untuk saya dengan jQuery 1.9, ini adalah solusinya!
Pascal

1
tampaknya itu prop("checked", true)berfungsi, attr('checked', 'checked')tidak
Tomasz Kuter

@ ThomaszKuter Saya sarankan untuk menggunakan prop () karena properti DOM diperiksa adalah salah satu yang harus mempengaruhi perilaku - tetapi aneh - dalam biola ini ( jsfiddle.net/KRXeV ) attr('checked', 'checked')benar-benar berfungsi x)
jave.web

berikut ini adalah disambiguasi yang baik stackoverflow.com/questions/5874652/prop-vs-attr
code_monk

81

Opsi pendek dan mudah dibaca:

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

Ini mengembalikan benar atau salah, sehingga Anda dapat menggunakannya dalam pernyataan "jika".


5
Terima kasih! Inilah yang saya cari, tapi (FYI) OP bertanya bagaimana cara mengatur tombol radio, tidak mendapatkan nilai. (Kata "cek" membuat pertanyaan membingungkan.)
Bampfer

31

Coba ini.

Untuk memeriksa tombol Radio menggunakan Nilai, gunakan ini.

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

Atau

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

Atau

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

Untuk memeriksa tombol Radio menggunakan ID gunakan ini.

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

Atau

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


13

The $.propcara adalah lebih baik:

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

dan Anda dapat mengujinya seperti berikut:

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

Kamu harus melakukan

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

Itu atribut HTML


7

Jika properti nametidak berfungsi jangan lupa bahwa idmasih ada. Jawaban ini untuk orang yang ingin menargetkan di idsini bagaimana Anda melakukannya.

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

Karena properti nametidak berfungsi untuk saya. Pastikan Anda tidak mengelilingi iddanname dengan kutipan ganda / tunggal.

Bersulang!


7

Ya, itu bekerja untuk saya seperti cara:

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

6

Coba ini

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

Anehnya, jawaban yang paling populer dan diterima mengabaikan memicu acara yang tepat terlepas dari komentar tersebut. Pastikan Anda memohon .change() , jika tidak semua ikatan "saat perubahan" akan mengabaikan acara ini.

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

Dapatkan nilai:

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

Tetapkan nilai:

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

Klik Tombol Radio tambahkan attr dicentang:

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

5

Kami ingin memberi tahu bahwa ini adalah radiotombol. Jadi silakan coba dengan kode berikut.

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

5

Untuk berjaga-jaga jika ada orang yang mencoba untuk mencapai hal ini saat menggunakan jQuery UI, Anda juga perlu me-refresh objek kotak centang UI untuk mencerminkan nilai yang diperbarui:

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

4

Saya menggunakan kode ini:

Saya minta maaf untuk bahasa Inggris.

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

Coba ini dengan contoh

<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);ini tidak akan berhasil. Seperti yang disebutkan oleh OP
JohnP

2
Tolong jelaskan kode dalam jawaban Anda, dan baca pertanyaannya (ini telah dicoba)
SomeKittens

2

Saya mendapatkan beberapa contoh terkait untuk ditingkatkan, bagaimana jika saya ingin menambahkan kondisi baru, katakanlah, jika saya ingin skema warna disembunyikan setelah saya mengklik nilai Status proyek kecuali Pavers dan Paving Slab.

Contohnya ada di sini:

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

Selain itu, Anda dapat memeriksa apakah elemen tersebut dicentang atau tidak:

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

Anda dapat memeriksa elemen yang tidak dicentang:

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

Anda juga dapat menghapus centang dengan cara ini:

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

Anda dapat memeriksa tombol radio:

Untuk versi jQuery yang sama atau lebih tinggi (> =) 1.6, gunakan:

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

Untuk versi sebelum (<) 1.6, gunakan:

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

2

Saya menggunakan jquery-1.11.3.js

Basic Enable & disable

Tips 1: (Jenis tombol radio umum Nonaktifkan & Aktifkan)

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

Tips 2: (pemilih ID Menggunakan prop () atau 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);

Tips 3: (Pemilih kelas Menggunakan prop () atau arrt ())

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

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

TIPS LAINNYA

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

Gunakan prop () mehtod

masukkan deskripsi gambar di sini

Tautan Sumber

<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

coba ini

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

jika dicentang kembali True jika tidak dicentang kembaliFalse

jQuery v1.10.1

1

Beberapa kali solusi di atas tidak berfungsi, maka Anda dapat mencoba di bawah ini:

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

Cara lain yang dapat Anda coba adalah:

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

1
Uniform adalah plugin jQuery yang membuat formulir lebih cantik, tetapi ia melakukannya dengan menambahkan elemen tambahan. Setiap kali saya memperbarui nilai yang dicentang, status elemen tambahan tidak diperbarui, mengarah ke input yang tidak terlihat yang tidak dicentang, tetapi dengan elemen latar belakang yang terlihat yang terlihat dicentang. jQuery.uniform.update()adalah solusinya!
Denilson Sá Maia

1

Coba ini:

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

Ini tidak akan berfungsi tanpa menyertakan file untuk checkboxradioplugin, yang tidak ada gunanya ketika Anda bisa menggunakan fungsi bawaan jQuery untuk menyelesaikannya (lihat jawaban yang diterima).
Nathan

1

Saya baru saja mengalami masalah yang sama, solusi sederhana adalah dengan hanya menggunakan:

.click()

Solusi lain akan berfungsi jika Anda me-refresh radio setelah memanggil fungsi.


1
panggilan klik kadang-kadang adalah sakit kepala di IE9
Astolfo Hoscher

1

attr menerima dua string.

Cara yang benar adalah:

jQuery("#radio_1").attr('checked', 'true');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.