2009-07-12 34 views
100

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ể chụp Xóa khóa. Đoạn dưới đây sẽ đăng nhập 0 khi Xóa phím được nhấn trong FireFox:Chụp phím "Xóa" bằng jQuery

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

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

Trả lời

176

Bạn không nên sử dụng sự kiện keypress, nhưng sự kiện keyup hoặc keydown vì sự kiện keypress dành cho các ký tự thực (có thể in). keydown được xử lý ở mức thấp hơn để nó sẽ chụp tất cả các phím không in như xóanhập.

+2

Cảm ơn bạn, thưa ông! –

+0

Cảm ơn vì thông tin hữu ích. –

+0

thông tin của bạn đã giải quyết được sự cố của tôi. Cảm ơn bạn –

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

Nguồn: javascript char codes key codes từ www.cambiaresearch.com

+18

Nó phải là 'alert ('Delete Key Released')'. – Waldheinz

+0

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

+1

Cảm ơn nguồn, tham khảo tuyệt vời! – Fidel90

25

javascript mã phím

  • e.keyCode == 8 cho xóa lùi
  • e.keyCode == 46 cho mong Backspace hay xóa nút trong máy tính của

Trừ chi tiết này câu trả lời Colin & Tod của đang làm việc.

+3

Phải là ** e.keyCode ** và không phải e.KeyCode – Jerome

1

event.key === "Delete"

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

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

Mozilla Docs

Supported Browsers

Các vấn đề liên quan