He escrito una función JS que solo permite el ingreso de números. Una copia de esta función es el siguiente:Se mantiene presionada la tecla shift en JavaScript
function NumbersOnly(e) {
var evt = e || window.event;
if (evt) {
var keyCode = evt.charCode || evt.keyCode;
//Allow tab, backspace and numbers to be pressed, otherwise return false for everything.
//(keyCode>=96 && keyCode<=105) are the numpad numbers
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
}
Esta función funciona bien con todos los números, pero mi problema ocurre cuando la tecla de mayúsculas se mantiene pulsado y una de las teclas numéricas se presiona. El valor devuelto es uno de los caracteres sobre los números. Entonces, por ejemplo, si mantengo presionada la tecla shift y presiono 7, se devuelve '&' pero el código de tecla sigue siendo 55. Hubiera esperado que eso fuera diferente.
Así que mi pregunta es ¿cómo puedo verificar si la tecla de mayúsculas se mantiene presionada. He intentado lo siguiente cheque, pero esto no funcionó:
if (keyCode === 16) {
evt.returnValue = false;
}
else {
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
estoy usando ASP.NET 4.0.
Cualquier ayuda sería recibida con gratitud.
Gracias de antemano.
Si le das la EVT en console.log, verá atributo shiftKey, si se pulsa la tecla de desplazamiento, que va a llegar a ser verdad –