Mã phím số trong JavaScript

Mỗi phím số với event.key, event.code và keyCode đã lỗi thời. Các chữ số ở hàng trên dùng keyCode 48–57; chữ số numpad dùng 96–105 và event.code Numpad0–Numpad9.

Cập nhật

Phímevent.keyevent.codekeyCode
00Digit0 / Numpad048 / 96
11Digit1 / Numpad149 / 97
22Digit2 / Numpad250 / 98
33Digit3 / Numpad351 / 99
44Digit4 / Numpad452 / 100
55Digit5 / Numpad553 / 101
66Digit6 / Numpad654 / 102
77Digit7 / Numpad755 / 103
88Digit8 / Numpad856 / 104
99Digit9 / Numpad957 / 105

Nhận diện chữ số từ cả hai hàng

document.addEventListener('keydown', (e) => {
  if (/^[0-9]$/.test(e.key)) {
    console.log('digit', Number(e.key)); // top row or numpad
  }
});

Trên bàn phím AZERTY của Pháp, hàng số phía trên gõ ra ký hiệu (&, é, " …) khi không giữ Shift, nên e.key ở đó không phải là chữ số — thêm một lý do để kiểm tra e.key thay vì giả định theo vị trí.

Câu hỏi thường gặp

event.key với chữ số có phân biệt hoa thường không?
Chữ cái phụ thuộc vào Shift và Caps Lock: event.key thường là “a” và là “A” khi giữ Shift. event.code luôn là KeyA trong cả hai trường hợp.
Mã phím có thay đổi theo bố cục bàn phím không?
event.key thay đổi theo bố cục (trên bàn phím AZERTY của Pháp, vị trí A gõ ra Q); event.code luôn chỉ đến phím vật lý.
Có nên vẫn dùng keyCode không?
Không — nó đã lỗi thời. Hãy dùng event.key cho ký tự và event.code cho vị trí phím.