2011-10-25 27 views
5
$(document).keydown(function (event) 
    { 
    alert(event.which); 
    }); 

Đối với khóa dấu chấm phẩy, ;, điều này mang lại 59 trong Firefox và 186 trong Chrome. Tuy nhiên, từ trang tham chiếu jQuery cho sự kiện keydown, nó cho biếtCố gắng tìm ra nếu có lỗi trong jQuery hoặc nếu đó là lỗi tôi đang thực hiện

"Trong khi trình duyệt sử dụng các thuộc tính khác nhau để lưu trữ thông tin này, jQuery bình thường hóa tài sản đó để bạn có thể sử dụng nó một cách đáng tin cậy để lấy mã khóa. vào một phím trên bàn phím, bao gồm mã cho các phím đặc biệt như mũi tên. "

Tôi có thiếu gì đó không?

Trả lời

4

Thuộc tính which là "một cửa hàng" được nhấn phím nào, cho phép bạn bỏ qua sự khác biệt giữa các thuộc tính keyCodecharCode. Đó là "bình thường hóa" mà jQuery cung cấp.

Sự khác biệt về giá trị which là sự khác biệt giữa cách các trình duyệt khác nhau cung cấp thông tin - vì vậy bạn sẽ phải viết mã để xử lý các giá trị khác nhau quay lại. Có a few references đối với hành vi này trực tuyến.

+0

Ok cảm ơn! Có vẻ như họ nên làm rõ trang tài liệu. – Nick

0

Tôi không biết về jQuery nhưng tôi khuyên bạn nên gắn bó với các sự kiện nhấn phím để nhập phím và chỉ sử dụng sự kiện nhấn phím cho các phím đặc biệt như mũi tên.

+0

Đáng buồn là điều này không thể di chuyển được. Xem: https://twitter.com/jezenthomas/status/624174305685958656 –

+0

@JezenThomas Không chắc bạn đang cố thêm gì ở đó; bàn của bạn không thảo luận về các sự kiện keydown và đồng ý rằng các sự kiện nhấn phím hoạt động đối với các phím gõ. – Neil

+0

Sự kiện nhấn phím không phải lúc nào cũng được kích hoạt, tùy thuộc vào khóa và tùy thuộc vào trình duyệt. Chúng ta phải sử dụng nhấn phím, nhưng thường kết hợp với keydown và keyup tùy thuộc vào khóa bạn đang mong đợi. –

1

A quick Google search cho biết bạn chỉ cần thử nghiệm cho cả hai. Đây là sự không nhất quán nhất quán với Firefox.

0

Dưới đây là toàn bộ các "bình thường" mà jQuery làm:

if (event.which == null) { 
    event.which = original.charCode != null ? original.charCode : original.keyCode; 
} 

Hình như nó chỉ được keyCode nếu charCode không tồn tại. Và charCode chỉ được sử dụng nếu event.which chưa tồn tại. Nó không thay đổi các con số xung quanh để làm cho chúng phù hợp.

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