จะตรวจสอบปุ่มตัวเลือกด้วย jQuery ได้อย่างไร?


889

ฉันลองตรวจสอบปุ่มตัวเลือกด้วย jQuery นี่คือรหัสของฉัน:

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

และจาวาสคริปต์:

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

ใช้งานไม่ได้:

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

ใช้งานไม่ได้:

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

ใช้งานไม่ได้:

คุณมีความคิดอื่นหรือไม่? ฉันพลาดอะไรไป


1
ขอบคุณสำหรับคำตอบของคุณ! ฉันพบปัญหา ที่จริงแล้วทั้งสองวิธีแรกในการทำงาน ประเด็นคือฉันใช้ jqueryUI เพื่อแปลงชุดของปุ่มตัวเลือก 3 ตัวเป็นชุดปุ่มด้วยรหัสนี้: jQuery ("# ​​type"). buttonset (); แต่การเปลี่ยนแปลงนี้ก่อนที่จะตรวจสอบวิทยุกำลังทำลายชุดวิทยุ (ไม่รู้สาเหตุ) ในที่สุดฉันก็โทรหา buttonset หลังจากตรวจสอบวิทยุและใช้งานได้อย่างไร้ที่ติ
Alexis

ใช้ $ ("อินพุต: radio [value = '2']"). prop ('ตรวจสอบแล้ว', จริง); ลิงค์ที่นี่freakyjolly.com/…
รหัส Spy

คำตอบ:


1469

สำหรับเวอร์ชันของ jQuery เท่ากับหรือสูงกว่า (> =) 1.6 ให้ใช้:

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

สำหรับเวอร์ชันก่อนหน้า (<) 1.6 ให้ใช้:

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

เคล็ดลับ:คุณอาจต้องการโทรclick()หรือchange()กดปุ่มตัวเลือกในภายหลัง ดูความคิดเห็นสำหรับข้อมูลเพิ่มเติม


80
ใน jQuery 1.9 หรือสูงกว่าโซลูชันนี้จะไม่ทำงาน ใช้ $ ("# radio_1"). prop ("ตรวจสอบ", จริง); แทน.
installero

12
@Installero จริงprepถูกต้องตั้งแต่ 1.6 และจำเป็นต้องตั้งแต่ 1.9
John Dvorak

43
เป็นประโยชน์ในการเพิ่ม.change()ไปยังจุดสิ้นสุดเพื่อเรียกใช้กิจกรรมอื่น ๆ บนหน้า
Foxinni

13
อาจเป็นการดีที่จะจัดเรียงคำตอบนี้ใหม่เพื่อให้.propชัดเจนว่าคำตอบที่ถูกต้องและ.attrวิธีการนั้นเป็นหมายเหตุสำหรับ jQuery <1.6
Patrick

22
หากคุณต้องการให้ปุ่มตัวเลือกอื่น ๆ ในกลุ่มตัวเลือกใช้งานได้อย่างถูกต้อง$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau

256

ลองสิ่งนี้

ในตัวอย่างนี้ฉันกำลังกำหนดเป้าหมายด้วยชื่อและค่าที่ป้อน

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

เป็นการดีที่จะทราบ: ในกรณีที่มีค่าหลายคำมันจะทำงานได้เพราะ apostrophes เช่นกัน


5
นี่อาจเป็นวิธีที่ดีที่สุดที่คนอื่นมีแนวโน้มที่จะติดอยู่ที่นั่นทำให้ฟังก์ชั่นไร้ประโยชน์เป็นครั้งที่สองในขณะที่การทำงานเป็นไปตามที่คาดไว้
Roy Toledo

พบว่ามีเพียงอันเดียวที่สามารถเลือกได้ $ ('input [name = "type"]: checked'). val () ก็ดีเช่นกัน
huggie

กรุณาทำอย่างละเอียด แนวคิดทั่วไปคือการตรวจสอบปุ่มตัวเลือกที่อยู่กับคุณลักษณะ - ชื่อและตัวเลือกค่า ฉันไม่แน่ใจว่าคุณพยายามทำอะไรให้สำเร็จเนื่องจากมีเพียงชื่อแอตทริบิวต์และ: ตัวเลือกหลอกที่เลือกใช้ และคุณก็ค้นคืน val เช่นกันซึ่งค่อนข้างสับสน ขอบคุณ
Vladimir Djuricic

2
ฉันกำลังจะไปเพิ่ม "id" ให้กับวิทยุของฉันทั้งหมด แต่วิธีนี้ใช้ได้อย่างไม่มีที่ติ แต่โปรดจำไว้ว่าเมื่อค่าของคุณเป็นคำหลายคำ (พูดว่า "color purple") คุณจะต้องใส่เครื่องหมายคำพูดที่เหมาะสม: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao

3
ดีกว่าคำตอบที่เลือก! สิ่งที่ฉันกำลังมองหา นี่เป็นคำทั่วไปในขณะที่คำตอบที่เลือกนั้นเฉพาะเจาะจง เยี่ยมมากขอบคุณ
GarbageGigo

96

อีกหนึ่งฟังก์ชั่น prop () ที่เพิ่มเข้าไปใน jQuery 1.6 ซึ่งทำหน้าที่ในจุดประสงค์เดียวกัน

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

13
attr('checked', true)หยุดทำงานสำหรับฉันกับ jQuery 1.9 นี้เป็นวิธีการแก้!
Pascal

1
ดูเหมือนว่าprop("checked", true)จะทำงานattr('checked', 'checked')ไม่ได้
Tomasz Kuter

@TomaszKuter ฉันขอแนะนำให้ใช้ prop () เนื่องจาก DOM มีการตรวจสอบคุณสมบัติเป็นสิ่งที่ควรส่งผลกระทบต่อพฤติกรรม - แต่มันแปลก - ในซอนี้ ( jsfiddle.net/KRXeV ) attr('checked', 'checked')ใช้งานได้จริง x)
jave.web


81

ตัวเลือกสั้นและง่ายต่อการอ่าน:

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

มันจะคืนค่าจริงหรือเท็จดังนั้นคุณสามารถใช้มันในคำสั่ง "ถ้า"


5
ขอบคุณ! นี่คือสิ่งที่ฉันกำลังมองหา แต่ (FYI) OP ได้ขอวิธีการตั้งค่าปุ่มตัวเลือกไม่ได้รับค่า (คำว่า "ตรวจสอบ" ทำให้คำถามสับสน)
Bampfer

31

ลองสิ่งนี้

ในการตรวจสอบปุ่มตัวเลือกโดยใช้ค่าใช้สิ่งนี้

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

หรือ

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

หรือ

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

ในการตรวจสอบปุ่มตัวเลือกด้วยID ให้ใช้สิ่งนี้

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

หรือ

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


13

$.propวิธีที่ดีกว่า:

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

และคุณสามารถทดสอบได้ดังต่อไปนี้:

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


7

หากทรัพย์สินnameไม่ทำงานอย่าลืมว่าidยังมีอยู่ คำตอบนี้มีไว้สำหรับผู้ที่ต้องการกำหนดเป้าหมายได้ที่idนี่

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

เพราะคุณสมบัติnameไม่ทำงานสำหรับฉัน ตรวจสอบให้แน่ใจว่าคุณไม่ได้ล้อมรอบidและnameมีการเสนอราคาคู่ / เดี่ยว

ไชโย!



6

ลองสิ่งนี้

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

น่าแปลกที่คำตอบที่ได้รับความนิยมและได้รับการยอมรับมากที่สุดจะไม่สนใจเหตุการณ์ที่เหมาะสมแม้ว่าจะมีความคิดเห็นก็ตาม ตรวจสอบให้แน่ใจว่าคุณเรียกใช้ .change()มิฉะนั้นการผูก "ที่เปลี่ยนแปลง" ทั้งหมดจะไม่สนใจกิจกรรมนี้

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

รับค่า:

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

ตั้งค่า:

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

คลิกปุ่มตัวเลือกเพื่อเพิ่มการตรวจสอบ attr:

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

5

เราควรจะบอกว่ามันเป็นradioปุ่มดังนั้นโปรดลองด้วยรหัสต่อไปนี้

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

5

ในกรณีที่ทุกคนพยายามทำสิ่งนี้ในขณะที่ใช้ jQuery UI คุณจะต้องรีเฟรชออบเจ็กต์ช่องทำเครื่องหมาย UI เพื่อแสดงค่าที่อัปเดต:

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

4

ฉันใช้รหัสนี้:

ฉันขอโทษสำหรับภาษาอังกฤษ

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

ลองด้วยตัวอย่าง

<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);สิ่งนี้จะไม่ทำงาน ดังกล่าวโดย OP
JohnP

2
โปรดอธิบายรหัสในคำตอบของคุณและอ่านคำถาม (สิ่งนี้ได้ลองแล้ว)
SomeKittens

2

ฉันได้รับตัวอย่างที่เกี่ยวข้องเพื่อได้รับการปรับปรุงวิธีการถ้าฉันต้องการเพิ่มเงื่อนไขใหม่สมมติว่าถ้าฉันต้องการซ่อนโทนสีหลังจากที่ฉันคลิกที่ค่าสถานะโครงการยกเว้น Pavers และ Paving Slab

ตัวอย่างอยู่ที่นี่:

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

นอกจากนี้คุณสามารถตรวจสอบว่ามีการตรวจสอบองค์ประกอบหรือไม่:

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

คุณสามารถตรวจสอบองค์ประกอบที่ไม่ได้ทำเครื่องหมายได้:

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

คุณสามารถยกเลิกการเลือกด้วยวิธีนี้:

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

คุณสามารถตรวจสอบปุ่มตัวเลือก:

สำหรับเวอร์ชันของ jQuery เท่ากับหรือสูงกว่า (> =) 1.6 ให้ใช้:

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

สำหรับเวอร์ชันก่อนหน้า (<) 1.6 ให้ใช้:

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

2

ฉันใช้jquery-1.11.3.js

เปิดใช้งาน & ปิดการใช้งานขั้นพื้นฐาน

เคล็ดลับ 1: (ปุ่มตัวเลือกประเภทวิทยุทั่วไปปิดใช้งาน & เปิดใช้งาน)

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

เคล็ดลับ 2: (ตัวเลือก ID การใช้ prop () หรือ 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);

เคล็ดลับ 3: (ตัวเลือกคลาสโดยใช้ prop () หรือ arrt ())

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

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

เคล็ดลับอื่น ๆ

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

ใช้prop () mehtod

ป้อนคำอธิบายรูปภาพที่นี่

ลิงค์ที่มา

<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

ลองนี้

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

ถ้าตรวจสอบผลตอบแทนTrue ถ้าไม่ตรวจสอบผลตอบแทนFalse

jQuery v1.10.1

1

บางครั้งการแก้ปัญหาข้างต้นไม่ทำงานจากนั้นคุณสามารถลองด้านล่าง:

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

อีกวิธีที่คุณสามารถลองได้คือ:

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

1
Uniformเป็นปลั๊กอิน jQuery ที่ทำให้แบบฟอร์มสวยขึ้น แต่ก็ทำได้โดยการเพิ่มองค์ประกอบพิเศษ เมื่อใดก็ตามที่ฉันอัปเดตค่าที่ตรวจสอบสถานะองค์ประกอบพิเศษจะไม่อัปเดตนำไปสู่อินพุตที่มองไม่เห็นที่ไม่ได้ตรวจสอบ แต่ด้วยองค์ประกอบพื้นหลังที่มองเห็นได้ซึ่งมีลักษณะที่ตรวจสอบแล้ว jQuery.uniform.update()คือทางออก!
Denilson Sá Maia

1

ลองสิ่งนี้:

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

สิ่งนี้จะไม่ทำงานหากไม่รวมไฟล์สำหรับcheckboxradioปลั๊กอินซึ่งไม่มีประโยชน์เมื่อคุณสามารถใช้ฟังก์ชั่นในตัวของ jQuery เพื่อทำสิ่งนี้ให้สำเร็จ (ดูคำตอบที่ยอมรับ)
นาธา

1

ฉันเพิ่งมีปัญหาที่คล้ายกันวิธีง่ายๆคือใช้:

.click()

โซลูชันอื่นใดจะทำงานหากคุณรีเฟรชวิทยุหลังจากเรียกใช้ฟังก์ชัน


1
คลิกโทรบางครั้งก็ปวดหัวใน IE9
Astolfo Hoscher

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.