2010-10-20 40 views
25

Tôi muốn kiểm tra nút radio đầu tiên của mỗi nhóm. Nhưng có một số nút radio bị vô hiệu hóa, do đó, tập lệnh nên bỏ qua chúng và đi tới nút không bị vô hiệu tiếp theo.Kiểm tra nút radio đầu tiên với JQuery

tôi đã viết một cái gì đó như thế này nhưng nó không hoạt động:

$(document).ready(function(){ 
if ($("input['radio']).is(':disabled')) 
    { 
     $(this).attr('checked', false); 
    } 
else 
    { 
     $(this).attr('checked', true); 
    } 
});

Thanks a lot

+0

nhập [loại = radio] thay vì –

+1

** Hoặc **, @Haim, 'đầu vào: radio'. –

Trả lời

49

Nếu nút của bạn được nhóm lại theo thuộc tính tên của họ, hãy thử:

$("input:radio[name=groupName][disabled=false]:first").attr('checked', true); 

Nếu họ được nhóm lại theo một container phụ huynh, sau đó:

$("#parentId input:radio[disabled=false]:first").attr('checked', true); 
+1

Nếu bạn muốn sự kiện thay đổi kích hoạt, hãy làm '.click()' thay vì – Yarin

0

Hãy thử điều này:

$("input:radio:not(:disabled)").attr("checked", true); 

Để kiểm tra nút radio đầu tiên chỉ trong một nhóm bạn có thể

$("parentelement input:radio:not(:disabled):first-child").attr("checked", true); 
+1

Tôi tin rằng OP có nghĩa là "nhóm" như trong "tất cả các nút radio chia sẻ cùng một thuộc tính tên" –

+0

'đầu tiên-con' không đúng – sje397

8

Dưới đây là những gì bạn muốn:

$(document).ready(
    function(){ 
    $('input:radio:first-child').attr('checked',true); 
    } 
); 

Demo tại: JS Bin.

+0

Mặc dù, để công bằng, cả @ Šime và @rahul đều mang lại sự tỉnh táo hợp lý- kiểm tra. –

+0

'first-child' không đúng – sje397

+0

$ ('input: radio: first-child') chọn nút radio đầu tiên từ bất kỳ nhóm radio nào trong trang của bạn. –

16
$("input:radio[name=groupX]:not(:disabled):first") 

này nên cung cấp cho bạn các đài phát thanh-nút không khuyết tật đầu tiên từ một nhóm ...

3
<input type="radio" name="r1"><br> 
<input type="radio" name="r1"><br> 
<hr> 
<input type="radio" name="r2"><br> 
<input type="radio" name="r2"><br> 
<input type="radio" name="r2"><br> 

<script> 
$(function(){ 
    //removed duplicates form the following array 
    $(jQuery.unique(
     //create an array with the names of the groups 
     $('INPUT:radio') 
      .map(function(i,e){ 
       return $(e).attr('name') } 
      ).get() 
    )) 
    //interate the array (array with unique names of groups) 
    .each(function(i,e){ 
     //make the first radio-button of each group checked 
     $('INPUT:radio[name="'+e+'"]:visible:first') 
      .attr('checked','checked'); 
    }); 
}); 
</script> 

jsfiddle = http://jsfiddle.net/v4auT/

+0

Nice Solution (y) –

Các vấn đề liên quan