É a tecla shift pressionada em JavaScript
Eu escrevi uma função JS que permite apenas que números sejam inseridos. Uma cópia dessa função está abaixo:
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 função funciona bem com todos os números, mas o meu problema acontece quando a tecla shift é pressionada e uma das teclas numéricas é pressionada. O valor retornado é um dos caracteres acima dos números. Então, por exemplo, se eu mantiver o shift pressionado e apertar 7, '&' é retornado, mas o keyCode ainda é 55 !! Eu teria esperado que isso fosse diferente.
Então, minha pergunta é como eu verifico se a tecla shift está sendo pressionada. Eu tentei a verificação a seguir, mas isso não funcionou:
if (keyCode === 16) {
evt.returnValue = false;
}
else {
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
Estou usando o ASP.NET 4.0.
Qualquer ajuda será muito bem recebida.
Desde já, obrigado.