Lưu ý rằng vấn đề này có thể không áp dụng cho công chúng, vì nó không xảy ra trừ khi bạn là người nhấp nhanh. (150-200ms/click) Lý do tôi đăng vấn đề này là vì ứng dụng của tôi có biểu mẫu với hơn 20 hộp kiểm cạnh nhau và sau khi nghiên cứu sâu rộng, tôi không tìm thấy câu hỏi nào liên quan đến vấn đề này.Ngăn chặn lỗi nhấp đúp với hộp kiểm + kết hợp nhãn
Dưới đây là một kịch bản đơn giản - 4 hộp kiểm và 4 nhãn, một cho mỗi id hộp kiểm:
[CB1] Label 1
[CB2] Label 2
[CB3] Label 3
[CB4] Label 4
Giả sử trong mỗi trường hợp tất cả các NHTM là không được kiểm soát.
mong đợi Hành vi:
- tôi bấm vào 4 NHTM trong kế nhanh chóng, tất cả họ sẽ trở thành kiểm tra. (đúng)
- Tôi nhấp vào 4 Nhãn liên tiếp nhanh chóng và các CB tương ứng sẽ được chọn. (Chỉ đúng đối với Chrome, nhưng vẫn không tối ưu)
hành vi thực tế đối với trường hợp 2 trên Win 7 (nhấp vào nhãn, bởi vì như bạn đã biết, nhãn lớn và phong cách thể, và các hộp kiểm là rất nhỏ và hệ điều hành phụ thuộc):
- (Trong Firefox 19) CB2 và CB4 còn lại được kiểm soát, và trong khi đi xuống trong danh sách từ "Label" được đánh dấu cho Nhãn 2 và Label 4, như thể tôi đúp nhấp về họ.
- (Trong Chrome 26) Tất cả CB được kiểm tra chính xác, nhưng trong khi đi xuống danh sách từ "Nhãn" được tô sáng cho Nhãn 2 và Nhãn 4, như thể tôi đã nhấp đúp vào chúng.
- (Trong IE 10) CB2 và CB4 không được chọn, nhưng không đánh dấu sai.
Hành vi sai lầm có thể được biện minh nếu các nhấp chuột trên cùng một phần tử. Trong trường hợp của chúng tôi, đó là những hộp kiểm rõ ràng duy nhất với các ID và Tên khác nhau. Vì vậy, kết quả là cực kỳ bất ngờ.
Vì vậy, câu hỏi của tôi là:
Có cách nào để vô hiệu hóa bắn sự kiện click đôi khi tôi nhanh chóng bấm vào hộp kiểm khác nhau, nhưng vẫn chưa kiểm tra xem chúng với vài cú click đơn nhanh?
Gần nhất tôi đã đến là kịch bản sau đây, mà thú vị khiến Firefox cư xử như Chrome và Chrome cư xử như Firefox:
jQuery(document).on('dblclick', 'input:checkbox+label', function(event){
console.log('ugly hack fired');
$(this).click();
event.preventDefault();
})
Vui lòng cho tôi biết nếu có cách tiếp cận đơn giản nào khác có hiệu quả. Theo thử nghiệm của tôi, các đề xuất khác liên quan đến dblclick không hoạt động. –