2013-07-05 32 views
8

Tôi có hai hộp kiểm, mà tôi muốn thực hiện để hành xử giống như chúng là nút radio (chỉ một trong số chúng được kiểm tra tại thời điểm).Kiểm tra các thuộc tính hộp kiểm tra là đúng, nhưng đánh dấu không được hiển thị

Vì vậy, tôi đã dễ dàng tìm thấy một giải pháp jQuery rằng nên làm như lừa:

$("input:checkbox").click(function(){ 
    var group = "input:checkbox[name='"+$(this).attr("name")+"']"; 
    $(group).attr("checked",false); 
    $(this).attr("checked",true); 
}); 

HTML trông như thế này:

<div class="radio"> 
    <label for="q_is_active_true">Is active</label> 
    <input name="radio_buttons" type="hidden" value="0"><input id="q_is_active_true" name="radio_buttons" type="checkbox" value="1"> 
    <label for="q_is_active_false">Is not active</label> 
    <input name="radio_buttons" type="hidden" value="0"><input id="q_is_active_false" name="radio_buttons" type="checkbox" value="1"> 
</div> 

Nhưng khi tôi click vào một trong các hộp kiểm tra, thậm chí thuộc tính "kiểm tra" của nó được đặt thành "đã chọn" không có dấu chọn nào được hiển thị:

+0

tại sao bạn có cùng tên "radio_buttons"? – Sergio

+0

@Sergio để tạo nhóm tôi tin :) –

+1

@MohammadAreebSiddiqui Điều đó không hoạt động với các hộp kiểm. – alex

Trả lời

20

Bạn cần phải được thiết lập tình trạng kiểm tra bởi nó prop erty để đạt được những gì bạn muốn:

$("input:checkbox").click(function(){ 
    var group = "input:checkbox[name='"+$(this).attr("name")+"']"; 
    $(group).prop("checked", false); 
    $(this).prop("checked", true); 
}); 

jsFiddle here.

+0

không attr() làm điều tương tự? nếu không thì sự khác nhau giữa chúng là gì? –

+4

@MohammadAreebSiddiqui đọc http://stackoverflow.com/questions/5874652/prop-vs-attr – PSL

3

Bạn có thể thử theo cách này:

$('input[name=checkBoxName]').parents('span').addClass("checked"); 
$("input[name=checkBoxName]").prop('checked', 'checked'); 

Dòng đầu tiên là để hiển thị đánh dấu vào hộp kiểm và dòng thứ hai là để thực sự kiểm tra nó.

+1

Điều này có liên quan đến thư viện giao diện người dùng, như bootstrap không? Tôi đã dành rất nhiều thời gian và điều này giải quyết vấn đề. Nhưng với kiến ​​thức của tôi chỉ cần thiết lập với 'prop (...)' nên làm việc quá (hộp kiểm không phải luôn luôn được đóng gói thành một 'span'), vì vậy tôi không có ý tưởng tại sao điều này làm việc trong trường hợp của tôi. – tokosh

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