2009-07-22 3 views
15

Trong jQuery, tôi muốn chọn tất cả các nhóm nút radio mà không có nút nào được chọn.Nhóm nút radio và radio

Hoặc, có cách nào để tôi có thể chọn tất cả các nhóm nút radio và lặp qua các nhóm không?

Tôi đang tự động thêm nhóm nút radio N vào một trang và sẽ không biết, trước bàn tay, tên của nhóm nút radio sẽ là gì.

+0

bạn có thể đặt mẫu html không? –

Trả lời

34

Để tìm tất cả các nhóm radio:

var radio_groups = {} 
$(":radio").each(function(){ 
    radio_groups[this.name] = true; 
}) 

để tìm mà đài phát thanh nhóm đã kiểm tra hộp radio và trong đó có không:

for(group in radio_groups){ 
    if_checked = !!$(":radio[name='"+group+"']:checked").length 
    alert(group+(if_checked?' has checked radios':' does not have checked radios')) 
} 
+2

những gì hiện !! đứng cho và tại sao? –

+0

[Không được phép, nó chuyển đổi giá trị boolean hai lần liên tiếp để '!! true = true'] (http://stackoverflow.com/questions/1406604/what-does-the-operator-double-exclamation-point- mean-in-javascript/1406618 # 1406618) –

+0

Tôi biết điều này là cũ, nhưng điều này đã giúp tôi rất nhiều! Tôi chỉ muốn một cách đơn giản để đảm bảo rằng mỗi nhóm nút radio của tôi đã được chọn, và nó ở đây. – LittleTreeX

0

Hỗ trợ cho nhiều nhóm và tiền kiểm tra.

$('input').click(function() { 
    var $t = $(event.target); 
    if ($t.hasClass('checked')) $t.removeAttr('checked'); 
    else $('input[type="radio"][name="' + $t.prop('name') + '"]').not($t).removeClass('checked'); 
    $t.toggleClass('checked'); 
}).filter(':checked').addClass('checked');​ 

`` `

Proof: http://jsfiddle.net/abrkn/PGW2Z/

0

Để chọn tất cả đài phát thanh theo tên nhóm và có được chỉ là danh sách các tên gọi khác nhau:

function selectRadioByGroupName() { 
     return $.unique($('input:radio').map(function(index, element) { 
      return this.name; 
     })); 
    } 

Một đoạn dụ:

function selectRadioByGroupName() { 
 
    return $.unique($('input:radio').map(function(index, element) { 
 
    return this.name; 
 
    })); 
 
} 
 

 

 

 
$(function() { 
 
    selectRadioByGroupName().each(function(index, element) { 
 
    $('body').append($('<p>First Group name is: ' + element + '</p>')); 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script> 
 

 
<form action=""> 
 
    <p> 
 
     Q1: 
 
    </p> 
 
    <input type="radio" name="gender" value="male"> Male<br> 
 
    <input type="radio" name="gender" value="female"> Female<br> 
 
    <input type="radio" name="gender" value="other"> Other 
 
    <br /> 
 
    <p> 
 
     Q2: 
 
    </p> 
 
    <input type="radio" name="status" value="male"> Single<br> 
 
    <input type="radio" name="status" value="female"> Married<br> 
 
    <input type="radio" name="status" value="other"> Other 
 
    <br /> 
 
    <input type="button" name="submit_id" value="Submit" onclick="submitAnswers()"> 
 
</form>

Sau khi nhận được các tên nhóm khác nhau, bạn có thể quay vòng chúng.