Удерживается ли клавиша Shift в JavaScript

Я написал функцию 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.

Мы с благодарностью примем любую помощь.

Заранее спасибо.

5
задан user123444555621 15 May 2012 в 11:11
поделиться