javascript – keyCode values for numeric keypad?

javascript – keyCode values for numeric keypad?

The keycodes are different. Keypad 0-9 is Keycode 96 to 105

Your if statement should be:

if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)) { 
  // 0-9 only
}

Heres a reference guide for keycodes


— UPDATE —

This is an old answer and keyCode has been deprecated. There are now alternative methods to achieve this, such as using key:

if ((e.key >= 48 && e.key <= 57) || (e.key >= 96 && e.key <= 105)) { 
  // 0-9 only
}

Heres an output tester for event.key, thanks to @Danziger for the link.

******************* Dont use KEYCODE !!!! ******************

The problem with keyCode is to avoid the combined keys with the numbers on top of keyboard, we must add a check on the key Shift and Alt to avoid special characters such as e @ & { }

A simplest solution is to convert e.key to a number and check if the conversion gives NaN!

let key = Number(e.key)
if (isNaN(key) || e.key === null || e.key ===  ) {
  console.log(is not numeric)
}
else {
  console.log(is numeric)
}

Be careful if e.key is null or a space, it gives 0 !

Number(5)         // => 5
Number(5)       // => 5
Number(null)      // => 0 
Number( )       // => 0
Number(chars)   // => NaN
Number(undefined) // => NaN

javascript – keyCode values for numeric keypad?

You can simply run

$(document).keyup(function(e) {
    console.log(e.keyCode);
});

to see the codes of pressed keys in the browser console.

Or you can find key codes here: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Numpad_keys

Leave a Reply

Your email address will not be published.