Xem mã phím và sự kiện JavaScript

Nhấn phím: event.key, event.code, keyCode, phím bổ trợ, IME, cùng sự kiện con trỏ.

Sự kiện chỉ được ghi khi ô này có tiêu điểm. Tắt chặn để gõ chữ vào ô (khi thử bộ gõ IME).

Tab và Shift+Tab luôn chuyển tiêu điểm, và không phím nào bị chặn khi bộ gõ (IME) đang soạn chữ.

keydown gần nhất

Nhấn một phím

JavaScript cho tổ hợp phím này

So khớp theo

Theo bố cục bàn phím của người dùng: hợp với phím tắt đặt theo chữ hay ký hiệu (Ctrl+Z, ?).

—

Lịch sử sự kiện

Sự kiện hiện ở đây khi bạn gõ trong ô.

Công cụ này làm gì

Bấm vào ô bắt phím rồi nhấn phím. Với mỗi keydown bạn thấy event.key, event.code, keyCode và which (đã lỗi thời), location (trái, phải hay bàn phím số), các phím bổ trợ, phím có đang tự lặp không, bộ gõ có đang soạn chữ không, và Caps Lock. Bảng lịch sử ghi keydown, keyup, keypress, các sự kiện composition và beforeinput theo thứ tự, và công cụ viết sẵn đoạn JavaScript xử lý đúng tổ hợp bạn vừa nhấn, so khớp theo ký tự hoặc theo phím vật lý. Thẻ thứ hai xem sự kiện chuột, cuộn, cảm ứng và con trỏ trong một vùng thử: nút, tọa độ, loại con trỏ, lực nhấn, độ nghiêng bút và độ cuộn.

key, code và keyCode trong một phút

  • `event.key` là thứ phím tạo ra với bố cục và phím bổ trợ hiện tại: "a", "A", "?", "Enter", hoặc "Dead" cho phím dấu đang chờ chữ tiếp theo.
  • `event.code` gọi tên phím vật lý như thể bàn phím là QWERTY kiểu Mỹ: "KeyA", "Digit1". Trên bàn phím AZERTY của Pháp, phím ở vị trí Q cho code "KeyQ" và key "a".
  • `keyCode` và `which` là các số cũ đã bị đặc tả UI Events đánh dấu lỗi thời; khi bộ gõ đang soạn, keyCode bằng 229.

Dùng `key` cho phím tắt đặt theo ký tự (Ctrl+Z, "?"), để chạy đúng trên mọi bố cục. Dùng `code` khi vị trí quan trọng hơn nhãn, như WASD trong trò chơi.

Gõ bằng bộ gõ (IME)

Gõ tiếng Việt kiểu Telex, pinyin hay kana đi qua bộ gõ. Khi đang soạn, trình duyệt phát compositionstart, compositionupdate, compositionend, và các keydown có isComposing bằng true. Mã xử lý phím tắt phải bỏ qua chúng, nếu không nhấn Enter để chốt chữ cũng gửi luôn biểu mẫu. Tắt chặn rồi gõ vào ô để xem trình tự.

Không giữ chân bàn phím

Việc chặn phím tắt chỉ áp dụng khi ô bắt phím có tiêu điểm, có thể tắt, và Tab, Shift+Tab không bao giờ bị chặn, nên bạn luôn rời đi được bằng bàn phím. Một số tổ hợp không bao giờ tới trang web: hệ điều hành giữ Alt+Tab, Cmd+Tab, Ctrl+Alt+Delete. Đọc thêm event.key, event.code và keyCode, hoặc xem chi tiết ký tự bằng công cụ tra cứu Unicode.

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

event.key và event.code khác nhau thế nào?

key là ký tự hay hành động phím tạo ra theo bố cục hiện tại, như "a", "A", "Enter". code là phím vật lý theo vị trí trên bố cục Mỹ, như "KeyA", bất kể bố cục. Trên AZERTY, cùng phím đó cho code "KeyQ" và key "a".

Có nên dùng keyCode không?

Không. keyCode và which đã lỗi thời: giá trị của dấu câu khác nhau giữa trình duyệt và bố cục, và bằng 229 khi bộ gõ đang soạn chữ.

Vì sao phím tắt chạy khi đang gõ tiếng Việt?

Vì mã xử lý không kiểm tra event.isComposing. Khi bộ gõ đang soạn, keydown vẫn phát. Hãy thoát sớm khi isComposing là true, như đoạn mã được tạo sẵn.

Làm sao để Ctrl+S trên Windows và Cmd+S trên Mac là một?

Kiểm tra (event.ctrlKey || event.metaKey) thay vì chỉ một phím, và chắc chắn các phím bổ trợ khác không được nhấn.