Đây là không để thay thế một hộp kiểm, nó cho phép một nhóm radio để quay trở lại trạng thái không được chọn. Điều này là khó khăn vì việc lựa chọn radio không hoạt động như một sự kiện bình thường.
Trình duyệt xử lý các nút radio bên ngoài chuỗi sự kiện bình thường. Vì vậy, một trình xử lý nhấp chuột trên một nút vô tuyến với event.preventDefault() hoặc event.stopPropagation() sẽ KHÔNG ngăn không cho nút radio được kiểm tra. Các .removeAttr ('kiểm tra') phải được thực hiện trong một setTimeout để cho phép sự kiện kết thúc, và trình duyệt để kiểm tra các radiobutton (một lần nữa), và sau đó setTimeout sẽ cháy.
Điều này cũng xử lý chính xác thời điểm người dùng khởi động ứng dụng được giữ lại nhưng rời khỏi nút radio trước khi di chuột.
//$ = jQuery;
$(':radio').mousedown(function(e){
var $self = $(this);
if($self.is(':checked')){
var uncheck = function(){
setTimeout(function(){$self.removeAttr('checked');},0);
};
var unbind = function(){
$self.unbind('mouseup',up);
};
var up = function(){
uncheck();
unbind();
};
$self.bind('mouseup',up);
$self.one('mouseout', unbind);
}
});
Tôi hy vọng điều này sẽ giúp
Ý bạn là chọn/bỏ chọn thay vì kiểm tra/bỏ chọn? –