javascript - ejemplo - valores de keyCode para el teclado numérico?
which javascript (6)
El problema con keyCode es evitar las teclas combinadas con los números en la parte superior del teclado, debemos agregar una marca en la tecla "Shift" y "Alt" para evitar caracteres especiales como @ & "{} ...
Una solución simple es convertir e.key en un número y verificar si la conversión da NaN .
let key = Number(e.key)
if (isNaN(key)) {
console.log("is not numeric")
}
else {
console.log("is numeric")
}
¿Los números en un teclado numérico tienen un código de tecla diferente de los números en la parte superior de un teclado?
Aquí hay algunos JavaScript que se supone que se ejecutan en el evento keyup, pero solo si el código clave está entre 48 y 57. Aquí está el código:
$(''#rollNum'').keyup(function(e) {
if(e.keyCode >= 48 && e.keyCode <= 57) { //0-9 only
var max = 15;
var textLen = $(this).val().length;
var textLeft = max - textLen;
. . .
Mi problema es que este código solo se ejecuta en respuesta a los números ingresados en la parte superior del teclado, pero no se ejecuta en respuesta a los números ingresados desde el teclado numérico.
Estoy pensando que la respuesta debe ser que el teclado numérico tiene diferentes valores de código de tecla, pero ¿cómo puedo averiguar cuáles son?
Los códigos de tecla son diferentes. El teclado 0-9 es el código clave 96
a 105
Su declaración if
debe ser:
if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)) {
// 0-9 only
}
Aquí hay una guía de referencia para los códigos clave
Para las personas que desean una solución CTRL + C, CTRL-V, aquí tienes:
/**
* Retrieves the number that was pressed on the keyboard.
*
* @param {Event} event The keypress event containing the keyCode.
* @returns {number|null} a number between 0-9 that was pressed. Returns null if there was no numeric key pressed.
*/
function getNumberFromKeyEvent(event) {
if (event.keyCode >= 96 && event.keyCode <= 105) {
return event.keyCode - 96;
} else if (event.keyCode >= 48 && event.keyCode <= 57) {
return event.keyCode - 48;
}
return null;
}
Utiliza la lógica de la primera respuesta.
Puede usar esto para descubrir keyCodes fácilmente:
$(document).keyup(function(e) {
// Displays the keycode of the last pressed key in the body
$(document.body).html(e.keyCode);
});
Simplemente puede ejecutar
$(document).keyup(function(e) {
console.log(e.keyCode);
});
para ver los códigos de las teclas presionadas en la consola del navegador.
O puede encontrar los códigos clave aquí: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Numpad_keys
keyCode es diferente para los números en el teclado numérico y los números en la parte superior del teclado.
keyCodes:
números en la parte superior del teclado (0 - 9): 48 - 57
números en el teclado numérico (0 - 9): 96 - 105
Condición de JavaScript:
if((e.keyCode >= 48 && e.keyCode <=57) || (e.keyCode >= 96 && e.keyCode <=105)) {
// entered key is a number
}
Referencia para todos los códigos clave (con demostración): codeforeach.com/javascript/…