Làm cách nào để kiểm tra nút radio với jQuery?


890

Tôi cố gắng kiểm tra một nút radio với jQuery. Đây là mã của tôi:

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

Và JavaScript:

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

Không hoạt động:

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

Không hoạt động:

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

Không hoạt động:

Bạn có ý tưởng khác không? Tôi đang thiếu gì?


1
Cảm ơn câu trả lời của bạn! Tôi tìm thấy vấn đề. Trên thực tế, hai cách đầu tiên để làm điều đó đang làm việc. Vấn đề là tôi đã sử dụng jqueryUI để chuyển đổi một bộ 3 nút radio thành một nút được đặt với mã này: jQuery ("# ​​type"). Buttonset (); nhưng thực hiện thay đổi này trước khi kiểm tra radio đã phá vỡ bộ đàm (không biết tại sao). Cuối cùng, tôi thực hiện cuộc gọi buttonset sau khi kiểm tra radio và nó hoạt động hoàn hảo.
Alexis

Sử dụng $ ("đầu vào: radio [value = '2']"). Prop ('đã kiểm tra', true); link tại đây freakyjolly.com/ từ
Code Spy

Câu trả lời:


1469

Đối với các phiên bản jQuery bằng hoặc cao hơn (> =) 1.6, hãy sử dụng:

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

Đối với các phiên bản trước (<) 1.6, hãy sử dụng:

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

Mẹo: Bạn cũng có thể muốn gọi click()hoặc change()vào nút radio sau đó. Xem ý kiến ​​để biết thêm.


80
Trong jQuery 1.9 trở lên, giải pháp này sẽ không hoạt động. Sử dụng $ ("# radio_1"). Prop ("đã kiểm tra", đúng); thay thế.
installero

12
@Installero thực sự, prepđúng từ 1.6 và được yêu cầu từ 1.9.
John Dvorak

43
Thật hữu ích khi thêm .change()vào cuối để kích hoạt bất kỳ sự kiện nào khác trên trang.
Foxinni

13
Có thể là khôn ngoan khi sắp xếp lại câu trả lời này để đó .proprõ ràng là câu trả lời đúng và .attrphương thức là một lưu ý cho jQuery <1.6.
Patrick

22
Nếu bạn muốn các nút radio khác trong nhóm radio được cập nhật, hãy sử dụng đúng cách$("#radio_1").prop("checked", true).trigger("click");
Paul LeBeau

256

Thử cái này.

Trong ví dụ này, tôi đang nhắm mục tiêu nó với tên và giá trị đầu vào của nó

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

Điều tốt để biết: trong trường hợp giá trị nhiều từ, nó cũng sẽ hoạt động vì dấu nháy đơn.


5
Đây có lẽ là cách tốt nhất, những người khác có xu hướng gắn bó ở đó làm cho chức năng trở nên vô dụng lần thứ hai trong khi điều này hoạt động đúng như mong đợi
Roy Toledo

Phát hiện ra rằng vì chỉ có một cái có thể được chọn, $ ('input [name = "type"]: đã kiểm tra'). Val () cũng tốt.
huggie

Xin hãy giải thích. Ý tưởng chung là kiểm tra một nút radio giải quyết nó với các thuộc tính của nó - tên và tùy chọn, giá trị. Tôi không chắc chắn những gì bạn đang cố gắng thực hiện với điều này, vì chỉ có thuộc tính tên và: bộ chọn giả được kiểm tra được sử dụng. Và bạn cũng đang truy xuất val, điều này khá khó hiểu. Cảm ơn
Vladimir Djuricic

2
Tôi đã định thêm một "id" cho tất cả các bộ đàm của mình, nhưng phương pháp này hoạt động hoàn hảo. Nhưng hãy nhớ rằng khi giá trị của bạn là nhiều từ (nói "màu tím"), bạn sẽ cần bao gồm các trích dẫn thích hợp: $("input[name=background][value='color purple']").prop("checked",true);
Tristan Tao

3
Tốt hơn nhiều so với câu trả lời được chọn! Chính xác những gì tôi đang tìm kiếm. Đây là chung chung, trong khi câu trả lời được chọn là cụ thể. Thật sự cảm ơn.
GarbageGigo

96

Thêm một hàm prop () được thêm vào trong jQuery 1.6, phục vụ cho cùng một mục đích.

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

13
Tôi attr('checked', true)đã ngừng làm việc với jQuery 1.9, đây là giải pháp!
Pascal

1
có vẻ như prop("checked", true)đang hoạt động, attr('checked', 'checked')không
Tomasz Kuter

@TomaszKuter Tôi khuyên bạn nên sử dụng prop () vì thuộc tính DOM được kiểm tra là thuộc tính sẽ ảnh hưởng đến hành vi - nhưng thật lạ - trong fiddle này ( jsfiddle.net/KRXeV ) attr('checked', 'checked')thực sự hoạt động x)
jave.web


81

Tùy chọn ngắn và dễ đọc:

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

Nó trả về đúng hoặc sai, vì vậy bạn có thể sử dụng nó trong câu lệnh "if".


5
Cảm ơn! Đây là những gì tôi đang tìm kiếm, nhưng (FYI) OP đã hỏi cách cài đặt nút radio, không nhận được giá trị. (Từ "kiểm tra" khiến câu hỏi trở nên khó hiểu.)
Bampfer

31

Thử cái này.

Để kiểm tra nút Radio bằng Giá trị, hãy sử dụng giá trị này.

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

Hoặc là

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

Hoặc là

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

Để kiểm tra nút Radio bằng ID, hãy sử dụng cái này.

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

Hoặc là

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


13

Các $.propcách là tốt hơn:

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

và bạn có thể kiểm tra nó như sau:

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

Bạn phải làm

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

Đó là thuộc tính HTML


7

Nếu tài sản namekhông hoạt động đừng quên rằng idvẫn còn tồn tại. Câu trả lời này dành cho những người muốn nhắm mục tiêu vào idđây bạn làm như thế nào.

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

Bởi vì tài sản namekhông làm việc cho tôi. Hãy chắc chắn rằng bạn không bao quanh idname với trích dẫn kép / đơn.

Chúc mừng!


7

Vâng, nó làm việc cho tôi như một cách:

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

6

Thử cái này

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

Đáng ngạc nhiên, câu trả lời phổ biến nhất và được chấp nhận bỏ qua việc kích hoạt sự kiện thích hợp bất chấp các ý kiến. Hãy chắc chắn rằng bạn gọi .change() , nếu không tất cả các ràng buộc "thay đổi" sẽ bỏ qua sự kiện này.

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

Nhận giá trị:

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

Đặt giá trị:

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

Nút Radio bấm thêm attr đã kiểm tra:

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

5

Chúng ta nên nói với nó là một radionút. Vì vậy, hãy thử với mã sau đây.

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

5

Chỉ trong trường hợp bất kỳ ai đang cố gắng đạt được điều này trong khi sử dụng jQuery UI, bạn cũng sẽ cần làm mới đối tượng hộp kiểm UI để phản ánh giá trị được cập nhật:

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

4

Tôi sử dụng mã này:

Tôi xin lỗi vì tiếng anh

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

Hãy thử điều này với ví dụ

<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);việc này sẽ không hiệu quả. Như được đề cập bởi OP
JohnP

2
Vui lòng giải thích mã trong câu trả lời của bạn và đọc câu hỏi (điều này đã được thử)
Một số chú mèo

2

Tôi đã nhận được một số ví dụ liên quan để cải thiện, nếu tôi muốn thêm một điều kiện mới, giả sử, nếu tôi muốn bảng màu bị ẩn sau khi tôi nhấp vào giá trị Trạng thái dự án ngoại trừ Pavers và Paving Slabs.

Ví dụ ở đây:

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

Ngoài ra, bạn có thể kiểm tra xem phần tử có được kiểm tra hay không:

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

Bạn có thể kiểm tra phần tử không được kiểm tra:

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

Bạn cũng có thể bỏ chọn theo cách này:

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

Bạn có thể kiểm tra nút radio:

Đối với các phiên bản jQuery bằng hoặc cao hơn (> =) 1.6, hãy sử dụng:

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

Đối với các phiên bản trước (<) 1.6, hãy sử dụng:

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

2

Tôi đã sử dụng jquery-1.11.3.js

Bật và tắt cơ bản

Mẹo 1: (Loại nút vô tuyến phổ biến Tắt & Bật)

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

Mẹo 2: (Bộ chọn ID Sử dụng prop () hoặc 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);

Mẹo 3: (Bộ chọn lớp Sử dụng prop () hoặc arrt ())

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

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

MIPSO KHÁC

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

Sử dụng prop () mehtod

nhập mô tả hình ảnh ở đây

Liên kết nguồn

<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

thử cái này

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

nếu kiểm tra trả về True nếu không kiểm tra trả lạiFalse

jQuery v1.10.1

1

Một số lần giải pháp trên không hoạt động, sau đó bạn có thể thử bên dưới:

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

Một cách khác bạn có thể thử là:

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

1
Đồng phục là một plugin jQuery làm cho các biểu mẫu đẹp hơn, nhưng nó làm điều đó bằng cách thêm các phần tử bổ sung. Bất cứ khi nào tôi cập nhật giá trị đã kiểm tra, trạng thái phần tử bổ sung không được cập nhật, dẫn đến đầu vào vô hình không được kiểm tra, nhưng với phần tử nền có thể nhìn thấy được kiểm tra. jQuery.uniform.update()là giải pháp!
Denilson Sá Maia

1

Thử cái này:

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

Điều này sẽ không hoạt động mà không bao gồm tệp cho checkboxradioplugin, điều này là vô nghĩa khi bạn chỉ có thể sử dụng các hàm dựng sẵn của jQuery để thực hiện điều này (xem câu trả lời được chấp nhận).
Nathan

1

Tôi vừa gặp một vấn đề tương tự, một giải pháp đơn giản là chỉ sử dụng:

.click()

Bất kỳ giải pháp nào khác sẽ hoạt động nếu bạn làm mới radio sau khi gọi chức năng.


1
nhấp chuột đôi khi là một vấn đề đau đầu trong eg9
Astolfo Hoscher

1

attr chấp nhận hai chuỗi.

Cách chính xác là:

jQuery("#radio_1").attr('checked', 'true');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.