2012-04-17 31 views
31

Ok vậy, sự khác biệt trong .keypress và .keydown/.keyup là gì? Hiện tại tôi đang sử dụng .keydown trả về giá trị 38 cho khóa của tôi, bây giờ nếu tôi thay đổi nó thành .keypress nó trả về giá trị 109 cho cùng khóa đó. Sự khác biệt là gì và tại sao các giá trị khác nhau cho cùng một khóa?jQuery .keypress & .keydown .which

+0

bạn đang sử dụng trình duyệt nào? – Mathletics

+0

Trình duyệt khác nhau sẽ dẫn đến các sự kiện khác nhau nhưng không phải là các lệnh chính khác nhau – SpYk3HH

+0

Tôi có một đối tượng json với mỗi sự kiện quan trọng và mỗi sự kiện chia cho trình duyệt, tôi sẽ đăng nó quá nhanh với cả ba phím bấm và chúng tôi có thể kiểm tra điều này , mánh lới quảng cáo như 10 phút – SpYk3HH

Trả lời

2

KeyPress xảy ra sau KeyDown. Vì vậy, bạn có thể sử dụng KeyDown để xác định khóa đó là gì, sau đó KeyPress để không cho phép ký tự đó.

14

Bạn nên đọc bài sau: http://javascript.info/tutorial/keyboard-events

KeyDown gây nên trên bất kỳ phím bấm và cho quét mã. Trình kích hoạt bấm phím sau khi nhấn phím và cung cấp mã char, nhưng nó chỉ được đảm bảo cho các phím ký tự.

21

Tôi sẽ là d $%^@ d, thực sự có sự khác biệt với nhấn phím và tất cả thời gian này tôi chưa bao giờ nhận ra. lol

Xem fiddle tôi và thử một cái gì đó giống như chữ "r"

http://jsfiddle.net/SpYk3/NePCm/

Bằng cách nào đó tôi không bao giờ quan tâm đến

Tìm thấy biết thêm điều này:

http://www.quirksmode.org/js/keys.html

"Hai thuộc tính là keyCodecharCode. Đặt (quá) chỉ đơn giản là, keyCode nói điều gì đó về phím bàn phím thực tế mà người dùng đã nhấn, trong khi charCode cung cấp giá trị ASCII của ký tự kết quả. Những bit thông tin này không cần phải giống nhau; ví dụ, chữ thường 'a' và chữ hoa 'A' có cùng số keyCode, bởi vì người dùng nhấn phím tương tự, nhưng khác nhau charCode vì ký tự kết quả là khác nhau.

Trình khám phá và Opera không hỗ trợ charCode. Tuy nhiên, họ cung cấp thông tin nhân vật trong keyCode, nhưng chỉ với onkeypress. onkeydown-upkeyCode chứa thông tin quan trọng."

+0

Yea, vậy đây là lý do tại sao tôi không hiểu tại sao? – ChrisMJ

+0

cũng như jbl chỉ ra trong câu trả lời của mình, [trang này] (http://javascript.info/tutorial/keyboard-events) mô tả vấn đề chỉ một chút, nhưng nó vẫn không có vẻ để trả lời câu hỏi trong toàn bộ . Có lẽ tôi đọc trang sai, nhưng tại một thời điểm nó vẫn chỉ ra các mã vạch như được kéo trên cả hai, chỉ đơn giản là một reutrns một giá trị khác nhau. Có lẽ một cái nhìn trong một số tài liệu js cũ sẽ tìm thấy câu trả lời. Tôi đang tìm kiếm bây giờ, cũng sẽ rewite đối tượng của tôi để bao gồm các sự khác biệt keypress – SpYk3HH

+0

mặc dù tôi sẽ đề nghị tránh nhấn phím vì nó không cháy như các sự kiện dự đoán như keydown và keyup – SpYk3HH

5

Trong những trường hợp bình thường, đi cho keyup:

$(document).keyup(function(e){ 
    console.log(e.which); 
}); 

Lý do:

  1. keydown giữ bắn khi người dùng giữ phím xuống, trong khi keypresskeyup lửa chỉ một lần
  2. .
  3. keypress không phát hiện các phím đặc biệt (ví dụ: SHIFT), keydownkeyup làm.
Các vấn đề liên quan