Thuộc tính which của sự kiện KeyboardEvent

Định nghĩa và cách sử dụng

Thuộc tính which trả về sự kiện Sự kiện onkeypress mã ký tự Unicode của phím được nhấn, hoặc kích hoạt onkeydown hoặc onkeyup Mã phím Unicode của phím được nhấn trong sự kiện.

Sự khác biệt giữa hai loại mã:

  • Mã ký tự - đại diện cho số của ký tự ASCII
  • Mã phím - đại diện cho số của phím thực tế trên bàn phím

Loại này không luôn có nghĩa là cùng một điều. Ví dụ, mã phím của chữ thường "w" và chữ hoa "W" là cùng nhau vì phím được nhấn trên bàn phím là giống nhau ("W" = số "87"), nhưng mã ký tự khác nhau vì ký tự kết quả là khác nhau ("w" hoặc "W", tức "119" hoặc "87") - Xem thêm các ví dụ dưới đây để hiểu rõ hơn.

Lưu ý:Nếu cần biết người dùng có nhấn phím có thể in được (ví dụ "a" hoặc "5") hay không, khuyến nghị sử dụng thuộc tính này trong sự kiện onkeypress. Để biết người dùng có nhấn phím chức năng (ví dụ "F1", "CAPS LOCK" hoặc "Home") hay không, hãy sử dụng sự kiện onkeydown hoặc onkeyup.

Ghi chú:IE8 và các phiên bản trước không hỗ trợ thuộc tính which. Đối với các phiên bản trình duyệt này, bạn có thể sử dụng thuộc tính keyCode. Tuy nhiên, thuộc tính keyCode không hoạt động với sự kiện onkeypress trong Firefox. Để có giải pháp tương thích giữa các trình duyệt, bạn có thể sử dụng mã sau:

var x = event.which || event.keyCode;  // Sử dụng which hay keyCode phụ thuộc vào hỗ trợ trình duyệt

Lưu ý:Để xem danh sách tất cả các ký tự Unicode, hãy xem Tham khảo Unicode đầy đủ.

Lưu ý:Nếu muốn chuyển đổi giá trị Unicode thành ký tự, hãy sử dụng fromCharCode() phương thức.

Ghi chú:Thuộc tính này chỉ đọc.

Ghi chú:Cung cấp thuộc tính keyCode và which chỉ để đảm bảo tương thích. Theo quy định mới nhất của DOM sự kiện, đề xuất sử dụng thuộc tính key (nếu có sẵn).

Lưu ý:Nếu bạn muốn biết có nhấn phím "ALT", "CTRL", "META" hoặc "SHIFT" khi xảy ra sự kiện nhấn phím hay không, hãy sử dụng altKeyctrlKeymetaKey hoặc shiftKey Thuộc tính.

Mô hình

Lấy giá trị Unicode của phím được nhấn:

var x = event.which;

Có thêm nhiều ví dụ TIY ở dưới trang.

Thử ngay

Cú pháp

event.which

Chi tiết kỹ thuật

Giá trị trả về: Giá trị số, biểu thị mã ký tự Unicode hoặc mã phím bàn phím Unicode.
Phiên bản DOM: DOM Level 2 Events

Hỗ trợ trình duyệt

Số trong bảng chỉ ra phiên bản trình duyệt đầu tiên hỗ trợ hoàn toàn thuộc tính đó.

Thuộc tính Chrome IE Firefox Safari Opera
which Hỗ trợ 9.0 Hỗ trợ Hỗ trợ Hỗ trợ

Các ví dụ thêm

Mô hình

Sử dụng onkeypress và onkeydown để minh họa sự khác biệt giữa mã ký tự và mã phím của bàn phím:

<input type="text" onkeypress="uniCharCode(event)" onkeydown="uniKeyCode(event)"> 
function uniCharCode(event) {
  var char = event.which || event.keyCode; // event.keyCode được sử dụng trong IE8 và các phiên bản trước
  document.getElementById("demo").innerHTML = "Mã CHARACTER Unicode: " + char;
}
function uniKeyCode(event) {
  var key = event.which || event.keyCode; // event.keyCode được sử dụng trong IE8 và các phiên bản trước
  document.getElementById("demo2").innerHTML = "Mã KEY Unicode: " + key;
}

Nhấn phím "a" trên bàn phím (không sử dụng Capslock) khi, kết quả của char và key sẽ là:

Mã CHARACTER Unicode: 97
Mã KEY Unicode: 65

Thử ngay

Mô hình

Nếu người dùng nhấn phím Escape, hãy hiển thị một đoạn văn bản nào đó:

<input type="text" onkeydown="myFunction(event)"> 
function myFunction(event) {
  var x = event.which || event.keyCode; // event.keyCode được sử dụng trong IE8 và các phiên bản trước
  if (x == 27) {  // 27 là phím ESC
    alert ("Bạn đã nhấn phím Escape!");
  }
}

Thử ngay

Mô hình

Chuyển đổi giá trị Unicode thành ký tự (không áp dụng cho phím chức năng):

var x = event.which || event.keyCode;   // Lấy giá trị Unicode
var y = String.fromCharCode(x);         // Chuyển đổi giá trị thành ký tự

Thử ngay

Trang liên quan

Tài liệu tham khảo HTML DOM:Thuộc tính key của KeyboardEvent

Tài liệu tham khảo HTML DOM:Thuộc tính keyCode của KeyboardEvent

Tài liệu tham khảo HTML DOM:Thuộc tính charCode của KeyboardEvent