Bắt giữ xóa Xóa nhấn phím với jQuery


118

Khi sử dụng mã ví dụ từ tài liệu jQuery cho trình xử lý sự kiện nhấn phím, tôi không thể nắm bắt được Deletekhóa. Đoạn mã dưới đây sẽ đăng nhập 0khi Deletenhấn phím trong FireFox:

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

Có vẻ như phải có một cách để lấy Deletechìa khóa, nhưng đó là một thuật ngữ mơ hồ để Google không chứng minh được nhiều sự giúp đỡ với nó.

Câu trả lời:


202

Bạn không nên sử dụng keypresssự kiện, nhưng sự kiện keyuphoặc keydownkeypresssự kiện này dành cho các nhân vật thực (có thể in). keydownđược xử lý ở mức thấp hơn vì vậy nó sẽ nắm bắt tất cả các phím không in như deleteenter.


keyupsẽ làm công việc tốt hơn.
localhoost

2
@atilkan không, người dùng mong đợi phản hồi keydownchứ không phải keyup. Tất cả các trình soạn thảo văn bản thực hiện các hành động khi nhấn phím, không phải khi nó được phát hành.
Philippe Leybaert

1
@PhilippeLeybaert Trong trường hợp của tôi, chương trình của tôi không thể bắt được char cuối cùng.
localhoost

82
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

Nguồn: mã javascript mã khóa từ www.cambiaresearch.com


18
Nó phải alert('Delete Key Released').
Waldheinz

nếu ai đó sử dụng phím nhấn thay vì keyup đã được đề xuất bởi Tod thì bạn sẽ nhận được mã khóa == 46 sự kiện. phím (dấu chấm). nhưng nó hoạt động tốt với keyUp. Cảm ơn
Mubashar

34

Mã khóa Javascript

  • e.keyCode == 8 chobackspace
  • e.keyCode == 46 cho forward backspacehoặc deletenút trong PC

Ngoại trừ chi tiết này, câu trả lời của Colin & Tod đang hoạt động.


4
Nó phải là e.keyCode chứ không phải e.KeyCode
Jerome

16

event.key === "Xóa"

Gần đây và sạch sẽ hơn nhiều: sử dụng event.key. Không còn mã số tùy ý!

LƯU Ý: Các thuộc tính cũ ( .keyCode.which) không được dùng nữa.

document.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Delete") {
        // Do things
    }
});

Tài liệu Mozilla

Trình duyệt được hỗ trợ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.