2012-04-19 37 views
5

Tôi đã tìm thấy hành vi lạ của sự kiện jQuery click. Nếu chúng tôi đang sử dụng điều hướng bàn phím (trường hợp truy cập), nhấp được khởi chạy bởi Enter hoặc Không gian (tùy thuộc vào yếu tố HTML nào chúng tôi đang sử dụng).Nhấp chuột của chuột jQuery() được khởi chạy bằng điều hướng bàn phím

Có một trang thử nghiệm trên jsfiddle, Bạn có thể thử để điều hướng với bàn phím trong khung Kết quả, và nhấp được đưa ra trong các tình huống khác nhau:

http://jsfiddle.net/DCXhN/9/

Trong jQuery dẫn sử dụng, tôi đã tìm thấy sau mô tả về click sự kiện:

"Sự kiện nhấp được gửi đến phần tử khi con trỏ chuột trên phần tử và nút chuột được nhấn và nhả. Mọi phần tử HTML đều có thể nhận sự kiện này".

Có bình thường không? Làm cách nào để chặn các sự kiện nhấp chuột nếu đó là hành vi bình thường?

+0

Có, tương tác bàn phím như sử dụng tab để điều hướng và sau đó ENTER sẽ kích hoạt sự kiện nhấp ... vì đó là lối tắt bàn phím cho hành vi mousedown/mouseup cho nhấp chuột – devnull69

+0

Wow. Nếu logic này nếu được định nghĩa trong jQuery hoặc ở cấp trình duyệt? –

+0

Tất cả các trình duyệt chính trên các cửa sổ làm điều này theo mặc định trên ví dụ đó (IE9, FF, Ch, Sa). Ngoài ra tôi đã thay đổi xử lý sự kiện từ jQuery thành javascript thuần túy và hành vi giống nhau nên nó phải là một biện pháp trình duyệt –

Trả lời

8

Có, điều này là bình thường. Tài liệu JQuery là chính xác, nhưng một chút không đầy đủ. Có nhiều chi tiết về WC3 site - ví dụ:

Lưu ý: Đối với khả năng tiếp cận tối đa, tác giả nội dung được khuyến khích sử dụng các loại sự kiện nhấp chuột khi xác định hành vi kích hoạt cho các điều khiển tùy chỉnh, chứ không phải là loại sự kiện trỏ thiết bị khác như mousedown hoặc mouseup, thiết bị cụ thể hơn. Mặc dù loại sự kiện nhấp chuột có nguồn gốc từ thiết bị con trỏ (ví dụ: một con chuột), các cải tiến triển khai tiếp theo đã mở rộng nó vượt ra ngoài liên kết đó và nó có thể được coi là loại sự kiện độc lập cho thiết bị để kích hoạt phần tử.

Hoặc, đặt một cách khác, đối với một số yếu tố, nhấp() về bản chất là sự kiện hợp lý thay vì sự kiện dành riêng cho thiết bị.

Nếu bạn thực sự chỉ muốn trả lời đầu vào chuột, bạn có thể sử dụng các sự kiện tương tự/up - nhưng hãy nhớ rằng bạn sẽ phải đặt bàn phím UI riêng biệt (ví dụ: sử dụng các sự kiện keydown/press/etc để cung cấp bàn phím tương đương).

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