2010-03-12 61 views
9

Dường như trong hầu hết các trình duyệt, <input type="submit"> xử lý cả [phím cách] và [enter] dưới dạng nhấp chuột, nhưng liên kết <a> chỉ xử lý [enter] dưới dạng nhấp chuột.jQuery - Kích hoạt sự kiện nhấp chuột trên các liên kết bằng phím dài?

Ứng dụng của tôi sử dụng một số liên kết được định dạng để mô phỏng các nút, vì vậy người dùng quen với việc nhấn tab và nhấn [phím cách] sẽ bị thất vọng.

chút này của jQuery giải quyết vấn đề:

$("a.Button").die("keypress").live("keypress", function(e) { 
    if (e.which == 32) { 
     $(this).trigger("click"); 
     e.preventDefault(); 
    } 
}); 

Câu hỏi của tôi: Có một lý do để không làm điều này? Tôi hơi miễn cưỡng khi ghi đè hành vi mặc định của trình duyệt trên một số thứ cơ bản như thế này, nhưng vì tôi đã lạm dụng thẻ liên kết để làm cho nó trông giống như một nút, ít nhất theo cách này, tôi không vi phạm kỳ vọng của người dùng thêm nữa.

+0

FWIW đây là ứng dụng có lượng người xem hạn chế. Javascript là một yêu cầu đã nêu để sử dụng nó. Nó làm cho việc sử dụng nhiều bản đồ, biểu đồ, lưới có thể chỉnh sửa và các yếu tố trực quan và/hoặc tương tác khác và không rõ ràng với tôi rằng nó có thể sử dụng được thông qua trình đọc màn hình. –

+0

Điều này dường như không hoạt động đối với các nút liên kết ASP.NET tạo ra các phần tử neo với một href của 'javascript: WebForm_DoPostBackWithOptions (new WebForm_PostBackOptions ("ctl00 $ main $ uclFind $ uclEntry $ btnGet", "", true, "", "", sai, đúng)) ' –

Trả lời

6

Tôi nghĩ tiêu chuẩn quan trọng nhất để duy trì không phải là hành vi của trình duyệt, mà là phản hồi mong đợi của người dùng.

Nếu bạn đã làm tối đa hiển thị liên kết bằng cách chuyển chúng thành nút, người dùng phải có khả năng xử lý "nút" đó chính xác như khi nút thực, nếu không bạn sẽ nhầm lẫn và kích thích người dùng đã sử dụng năm với hành vi "học" này.

0

Có các mối quan tâm về khả năng sử dụng tiêu chuẩn.

Tôi nghĩ 'trông giống như' là chìa khóa ở đây. Nếu ai đó đang sử dụng trình đọc màn hình, họ sẽ 'thấy' một liên kết và hành động phù hợp.

Nếu ai đó đã tắt javascript chức năng jquery (hiển nhiên) sẽ không chạy và họ cũng sẽ nhận được hành vi liên kết.

Rõ ràng bạn đã thực hiện linh hồn tìm kiếm (!) Bằng cách sử dụng liên kết như nút để có thể xử lý hai trường hợp này - trình đọc màn hình và không phải javascript.

Nếu bạn không thể mô phỏng hành vi nút (trên một liên kết) cho hai trường hợp này thì bạn sẽ cung cấp cho người khác trải nghiệm khác nhau - đó là lý do chính đáng để không sử dụng chức năng. Hoặc phím cách sẽ kích hoạt mọi lần sử dụng các liên kết/nút này hoặc không có liên kết nào.

+0

Tôi không đồng ý vì một vài lý do 1) Chỉ vì tiêu chuẩn tồn tại không có nghĩa là chúng cần được áp dụng trong mọi tình huống. Trong trường hợp đặc biệt này, nếu anh ta theo lời khuyên của bạn, anh ấy sẽ nói về * phản ứng mong đợi của mọi người *, thay vì chỉ một vài người chọn không tham gia JS. 2) Bạn cũng giả định rằng một người dùng muốn có nó hoạt động trên hệ thống * no *, thay vì chỉ * một số * hệ thống. Tôi có thể thấy đây là vấn đề với các ứng dụng phía máy khách, nhưng trên web, cho tất cả các mục đích thực tế, các trang web hầu như luôn hiển thị theo những cách khác nhau một cách tinh tế. Người dùng expecation là đây sẽ là trường hợp. – dclowd9901

+0

Đủ công bằng - những gì về trình đọc màn hình, họ có thể bỏ qua không? – amelvin

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