Hay una manera de hacer esto con keydown, si pulsación de tecla no es viable debido a las necesidades de cancelación de eventos, etc. Utilice una sentencia if() con esta prueba:
parseInt(event.keyIdentifier.substring(2),16) > 47 && parseInt(event.keyIdentifier.substring(2),16) < 58
O, con eventos de jQuery:
parseInt(event.originalEvent.keyIdentifier.substring(2),16) > 47 && parseInt(event.originalEvent.keyIdentifier.substring(2),16) < 58
En estos ejemplos se supone que "evento" es el evento de selección de teclas. keyIdentifier es un número hexadecimal que representa el valor unicode para el char relacionado. Usando keyIdentifier, los números del teclado numérico/teclado Y los números sobre su teclado QWERTY tendrán todos los mismos valores, 48 - 57 (U + 0030 - U + 0039), incluso con el evento keyDown.
Los valores Unicode en los navegadores se verán como U + 0030 o U + 002F. Analice esta cadena para obtener solo el valor hexadecimal, luego use parseInt() con una base de 16 para convertirlo a base-10.
Supongamos que personajes reales tanto desee en el teclado, y también desea capturar y detener la tecla Intro, para evitar que un envío de formulario? La detención de la pulsación de tecla aún parece enviarse. – enigment
No puedo expresar cuán agradecido estoy por esta respuesta. Esta fue mi salvación tratando de atrapar todos los diferentes casos posibles con shift, alt, teclado numérico y teclados móviles. 'keypress' lo hace fácil como un pastel. – nirazul