Я написал функцию JS, которая позволяет вводить только числа. Копия этой функции приведена ниже:
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;
}
}
}
Эта функция отлично работает со всеми числами, но моя проблема возникает, когда удерживается клавиша Shift и нажимается одна из цифровых клавиш. Возвращаемое значение является одним из символов над числами. Так, например, если я удерживаю клавишу Shift и нажимаю 7, возвращается «&», но код клавиши по-прежнему равен 55!! Я ожидал, что будет по-другому.
Итак, мой вопрос заключается в том, как проверить, удерживается ли нажатой клавиша Shift. Я пробовал следующую проверку, но это не сработало:
if (keyCode === 16) {
evt.returnValue = false;
}
else {
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
Я использую ASP.NET 4.0.
Мы с благодарностью примем любую помощь.
Заранее спасибо.