Wird die Umschalttaste in JavaScript gedrückt gehalten?

Ich habe eine JS-Funktion geschrieben, mit der nur Zahlen eingegeben werden können. Eine Kopie dieser Funktion finden Sie unten:

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

Diese Funktion funktioniert bei allen Nummern, aber mein Problem tritt auf, wenn die Umschalttaste gedrückt und eine der Zifferntasten gedrückt wird. Der zurückgegebene Wert ist eines der Zeichen über den Zahlen. Wenn ich zum Beispiel die Umschalttaste gedrückt halte und 7 drücke, wird "&" zurückgegeben, aber der keyCode ist immer noch 55 !! Das hätte ich anders erwartet.

Meine Frage ist also, wie ich überprüfe, ob die Umschalttaste gedrückt wird. Ich habe die folgende Prüfung versucht, aber dies hat nicht funktioniert:

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

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


        }
        else {

            evt.returnValue = false;
        }
    }

Ich verwende ASP.NET 4.0.

Jede Hilfe wäre dankbar.

Danke im Voraus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage