Capturing "Delete" Keypress with jQuery

145,438

Solution 1

You shouldn't use the keypress event, but the keyup or keydown event because the keypress event is intended for real (printable) characters. keydown is handled at a lower level so it will capture all nonprinting keys like delete and enter.

Solution 2

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

Source: javascript char codes key codes from www.cambiaresearch.com

Solution 3

Javascript Keycodes

  • e.keyCode == 8 for backspace
  • e.keyCode == 46 for forward backspace or delete button in PC's

Except this detail Colin & Tod's answer is working.

Solution 4

event.key === "Delete"

More recent and much cleaner: use event.key. No more arbitrary number codes!

NOTE: The old properties (.keyCode and .which) are Deprecated.

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

Mozilla Docs

Supported Browsers

Share:
145,438
Shane H
Author by

Shane H

Engineering Lead at Trulia

Updated on July 08, 2022

Comments

  • Shane H
    Shane H almost 2 years

    When using the example code from the jQuery documentation for the keypress event handler, I'm unable to capture the Delete key. The snippet below is going to log 0 when the Delete key is pressed in FireFox:

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

    Seems there's gotta be a way to capture the Delete key, but it's an ambiguous term so Google isn't proving to be much help with it.

  • Waldheinz
    Waldheinz about 11 years
    It should be alert('Delete Key Released').
  • Mubashar
    Mubashar about 10 years
    if somebody uses keypress instead of keyup has suggested by Tod then you would get keycode == 46 event against . key (dot). but it works well with keyUp. Thanks
  • Jerome
    Jerome about 8 years
    It should be e.keyCode and not e.KeyCode
  • atilkan
    atilkan about 7 years
    keyup would be do the job better.
  • Philippe Leybaert
    Philippe Leybaert about 7 years
    @atilkan no, the user expects feedback on keydown, not keyup. All text editors perform actions when a key is pressed, not when it's released.
  • atilkan
    atilkan about 7 years
    @PhilippeLeybaert In my case program can't catch the last pressed char.
  • Barbz_YHOOL
    Barbz_YHOOL over 3 years
    same as atilkan, so i use keyup