Czy klawisz Shift jest wciśnięty w JavaScript

Napisałem funkcję JS, która zezwala tylko na wprowadzanie numerów. Kopia tej funkcji znajduje się poniżej:

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;
        }
    }
}

Ta funkcja działa poprawnie z wszystkimi liczbami, ale mój problem występuje, gdy klawisz Shift jest wciśnięty i jeden z klawiszy numerycznych jest wciśnięty. Zwracana wartość jest jednym ze znaków powyżej liczb. Na przykład, jeśli przytrzymam klawisz Shift i naciśniesz klawisz 7, zwracane jest „&”, ale kod klucza nadal wynosi 55 !! Spodziewałbym się, że będzie inaczej.

Moje pytanie brzmi: jak sprawdzić, czy klawisz Shift jest przytrzymywany. Próbowałem następującego sprawdzenia, ale to nie zadziałało:

    if (keyCode === 16) {
        evt.returnValue = false;
    }
    else {

        if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {


        }
        else {

            evt.returnValue = false;
        }
    }

Używam ASP.NET 4.0.

Każda pomoc byłaby z wdzięcznością przyjęta.

Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion