2013-02-27 34 views
9

nói đây là HTML của tôi:Làm thế nào tôi có thể chuyển đổi radiobutton

<input type="radio" name="rad" id="Radio0" checked="checked" /> 
<input type="radio" name="rad" id="Radio1" /> 
<input type="radio" name="rad" id="Radio2" /> 
<input type="radio" name="rad" id="Radio4" /> 
<input type="radio" name="rad" id="Radio3" /> 

Như bạn có thể thấy nút radio 1 sẽ được kiểm tra. Tôi cần nút radio để hoạt động như chuyển đổi. Ví dụ: Nếu tôi lại nhấp vào radio0, tất cả các nút radio sẽ không được chọn.

Làm cách nào để đạt được điều đó?

Cập nhật: Tôi không muốn thêm bất kỳ nút nào. Ví dụ: Tôi có thể thêm một nút và đặt thuộc tính đã chọn cho tất cả các nút radio là sai. Tuy nhiên, tôi không muốn điều đó. Tôi chỉ muốn mẫu của tôi bao gồm 4 nút radio này.

Cập nhật: Vì hầu hết mọi người không hiểu những gì tôi muốn, hãy để tôi cố gắng lặp lại - Tôi muốn nút radio hoạt động ở chế độ bật tắt. Tôi đã đặt cùng tên cho tất cả các nút radio vì thế nó là một nhóm. Bây giờ tôi muốn các radiobuttons để chuyển đổi chính nó. Ví dụ. nếu tôi bấm vào radio0, nó sẽ được bỏ chọn nếu nó được kiểm tra và kiểm tra nếu nó không được kiểm tra.

+0

tôi nghĩ rằng "tất cả các nút radio phải được kiểm tra" – 999k

+0

@Toms: Ý của bạn là gì? – Jack

+1

Bạn không thể chọn nhiều nút radio thuộc cùng một gruop (có cùng giá trị "tên") .. Hãy nghĩ đến các hộp kiểm. – Nils

Trả lời

18

Sự cố bạn sẽ thấy là ngay khi nút radio được nhấp, trạng thái của nó được thay đổi trước khi bạn có thể kiểm tra. Những gì tôi đề nghị là thêm một thuộc tính tùy chỉnh để theo dõi trạng thái trước đó của mỗi đài phát thanh như vậy:

$(function(){ 
    $('input[name="rad"]').click(function(){ 
     var $radio = $(this); 

     // if this was previously checked 
     if ($radio.data('waschecked') == true) 
     { 
      $radio.prop('checked', false); 
      $radio.data('waschecked', false); 
     } 
     else 
      $radio.data('waschecked', true); 

     // remove was checked from other radios 
     $radio.siblings('input[name="rad"]').data('waschecked', false); 
    }); 
}); 

Bạn cũng sẽ cần phải thêm thuộc tính này để đánh dấu phát thanh kiểm tra ban đầu

<input type="radio" name="rad" id="Radio0" checked="checked" data-waschecked="true" /> 

Xem bản demo tại đây: http://jsfiddle.net/GoranMottram/VGPhD/2/

+0

Excellennt !! Chính xác hành vi mà tôi cần. – Jack

+0

Có một vấn đề nhỏ. Khi tôi nhấp vào đài 1 lần đầu tiên. Nó vẫn được kiểm tra. Bạn có thể tái tạo nó không? – Jack

+0

Ah vâng, tôi đã cập nhật câu trả lời với bản sửa lỗi. Xin lỗi vì điều đó. –

9

Khi bạn đặt tên cho 2 hoặc nhiều nút radio giống nhau, chúng sẽ tự động trở thành một nhóm. Trong nhóm đó chỉ có một nút radio có thể được kiểm tra. Bạn đã đạt được điều này.

0

Tôi sử dụng onClick() như sau cho radio tùy chỉnh của tôi:

$(function(){ 
    // if selected already, deselect 
    if ($(this).hasClass('selected') { 
    $(this).prop('checked', false); 
    $(this).removeClass('selected'); 
    } 
    // else select 
    else { 
    $(this).prop('checked', true); 
    $(this).addClass('selected'); 
    } 
    // deselect sibling inputs 
    $(this).siblings('input').prop('checked', false); 
    $(this).siblings('input').removeClass('selected'); 
} 
Các vấn đề liên quan