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
Trả lời
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ự đó.
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ự.
Nếu bạn nhấn nút, nó sẽ phát ra keydown
và phát hành nó sẽ phát ra keyup
. Các keypress
thường đến giữa hai.
keydown
và keyup
nói chuyện về những chính đã được thay đổi. keypress
cho biết ký tự khóa đó đại diện cho.
Lưu ý rằng đây là tất cả phụ thuộc vào trình duyệt!
Xem this article about the differences between the key events as implemented on various browsers.
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à
keyCode
vàcharCode
. Đặ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 khicharCode
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 nhaucharCode
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 trongkeyCode
, nhưng chỉ vớionkeypress
.onkeydown
và-up
keyCode
chứa thông tin quan trọng."
Yea, vậy đây là lý do tại sao tôi không hiểu tại sao? – ChrisMJ
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
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
Trong những trường hợp bình thường, đi cho keyup
:
$(document).keyup(function(e){
console.log(e.which);
});
Lý do:
keydown
giữ bắn khi người dùng giữ phím xuống, trong khikeypress
vàkeyup
lửa chỉ một lần .
keypress
không phát hiện các phím đặc biệt (ví dụ:SHIFT
),keydown
vàkeyup
làm.
- 1. Kích hoạt một sự kiện keypress/keydown/keyup trong JS/jQuery?
- 2. Jquery .keyup .keydown .keypress không phát hiện tự động điền của trình duyệt
- 3. jQuery: keyPress Backspace sẽ không kích hoạt?
- 4. Vấn đề jQuery $ (tài liệu) .keydown()
- 5. Bind Nhiều Keys để keyPress Event
- 6. Unbind event keypress đặc biệt
- 7. .keypress trên thẻ DIV?
- 8. Qt: Sự kiện KeyPress
- 9. Sự kiện KeyPress tương đương trong WPF
- 10. KeyDown và Cocoa Sample
- 11. Có python nào tương đương với lệnh Unix `which` không?
- 12. Sự kiện "KeyPress" cho hộp văn bản WinForms bị thiếu?
- 13. addEventListener KeyDown không làm việc
- 14. Phím Command Keypress của Java Robot
- 15. KeyPress F1 không hoạt động C#
- 16. Trình kích hoạt Javascript trên "KeyPress" và "Paste"
- 17. Opera ngăn chặnDefault() trên sự kiện keydown
- 18. Silverlight 4 + MVVM + Sự kiện KeyDown
- 19. Chụp các sự kiện KeyDown trong UserControl
- 20. Sự kiện KeyDown Concat (Phím) cho một chuỗi C# (wpf)
- 21. Sự kiện JQuery/DOM để nhập tiếng Trung (ibus)?
- 22. Không được sử dụng thuộc tính "The 'charCode' của một sự kiện keydown. Giá trị là vô nghĩa" trong jQuery
- 23. Sự kiện KeyDown không kích hoạt bằng .NET WinForms?
- 24. Trình nghe sự kiện 'keydown' của Javascript không hoạt động
- 25. Force KeyDown để bắn chỉ một lần mỗi keyCode
- 26. catch-all sự kiện keyup/keydown trong khung nội tuyến?
- 27. Làm thế nào để bẫy phím backspace bằng cách sử dụng jQuery?
- 28. Cách kích hoạt nhiều sự kiện nhấn và giữ trong jQuery
- 29. Phím dừng lặp lại khi giữ. (JQuery)
- 30. vô hiệu hóa tất cả các sự kiện keyup/keydown/keypressed trên trang
bạn đang sử dụng trình duyệt nào? – Mathletics
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
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