Làm cách nào để bắt sự kiện kiểm tra / bỏ chọn <input type="checkbox" />
với jQuery?
Làm cách nào để bắt sự kiện kiểm tra / bỏ chọn <input type="checkbox" />
với jQuery?
Câu trả lời:
<input type="checkbox" id="something" />
$("#something").click( function(){
if( $(this).is(':checked') ) alert("checked");
});
Chỉnh sửa: Làm điều này sẽ không bắt khi hộp kiểm thay đổi vì lý do khác ngoài nhấp chuột, như sử dụng bàn phím. Để tránh vấn đề này, hãy lắng nghe change
thay vì click
.
Để kiểm tra / bỏ chọn chương trình, hãy xem Tại sao sự kiện thay đổi hộp kiểm của tôi không được kích hoạt?
change
thay vì nhấp. Tôi đang cập nhật câu trả lời
Nhấp chuột sẽ ảnh hưởng đến nhãn nếu chúng ta có một nhãn được gắn vào hộp kiểm đầu vào?
Tôi nghĩ rằng tốt hơn là sử dụng hàm .change ()
<input type="checkbox" id="something" />
$("#something").change( function(){
alert("state changed");
});
Đối với JQuery 1.7+, hãy sử dụng:
$('input[type=checkbox]').on('change', function() {
...
});
Sử dụng đoạn mã dưới đây để đạt được điều này.:
$('#checkAll').click(function(){
$("#checkboxes input").attr('checked','checked');
});
$('#UncheckAll').click(function(){
$("#checkboxes input").attr('checked',false);
});
Hoặc bạn có thể làm tương tự với hộp kiểm duy nhất:
$('#checkAll').click(function(e) {
if($('#checkAll').attr('checked') == 'checked') {
$("#checkboxes input").attr('checked','checked');
$('#checkAll').val('off');
} else {
$("#checkboxes input").attr('checked', false);
$('#checkAll').val('on');
}
});
Đối với bản demo: http://jsfiddle.net/creativegala/hTtxe/
Theo kinh nghiệm của tôi, tôi đã phải tận dụng mục tiêu hiện tại của sự kiện:
$("#dingus").click( function (event) {
if ($(event.currentTarget).is(':checked')) {
//checkbox is checked
}
});
Mã này làm những gì bạn cần:
<input type="checkbox" id="check" >check it</input>
$("#check").change( function(){
if( $(this).is(':checked') ) {
alert("checked");
}else{
alert("unchecked");
}
});
Ngoài ra, bạn có thể kiểm tra nó trên jsfiddle
sử dụng sự kiện nhấp để tương thích tốt nhất với MSIE
$(document).ready(function() {
$("input[type=checkbox]").click(function() {
alert("state changed");
});
});
$(document).ready(function(){
checkUncheckAll("#select_all","[name='check_boxes[]']");
});
var NUM_BOXES = 10;
// last checkbox the user clicked
var last = -1;
function check(event) {
// in IE, the event object is a property of the window object
// in Mozilla, event object is passed to event handlers as a parameter
event = event || window.event;
var num = parseInt(/box\[(\d+)\]/.exec(this.name)[1]);
if (event.shiftKey && last != -1) {
var di = num > last ? 1 : -1;
for (var i = last; i != num; i += di)
document.forms.boxes['box[' + i + ']'].checked = true;
}
last = num;
}
function init() {
for (var i = 0; i < NUM_BOXES; i++)
document.forms.boxes['box[' + i + ']'].onclick = check;
}
HTML:
<body onload="init()">
<form name="boxes">
<input name="box[0]" type="checkbox">
<input name="box[1]" type="checkbox">
<input name="box[2]" type="checkbox">
<input name="box[3]" type="checkbox">
<input name="box[4]" type="checkbox">
<input name="box[5]" type="checkbox">
<input name="box[6]" type="checkbox">
<input name="box[7]" type="checkbox">
<input name="box[8]" type="checkbox">
<input name="box[9]" type="checkbox">
</form>
</body>