Est-ce que la clé shift est maintenue en JavaScript

J'ai écrit une fonction JS qui n'autorise que les nombres à entrer. Une copie de cette fonction est la suivante:

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

Cette fonction fonctionne bien avec tous les chiffres, mais mon problème se produit lorsque la touche Maj est maintenue enfoncée et l'une des touches numériques est enfoncée. La valeur renvoyée est l'un des caractères au-dessus des nombres. Donc, par exemple, si je maintiens le décalage et appuyez sur 7, '&' est renvoyé, mais KeyCode est encore 55! Je m'attendais à ce que ce soit différent.

Donc, ma question est de savoir comment vérifier si la touche Maj est maintenue enfoncée. J'ai essayé la vérification suivante, mais cela n'a pas fonctionné:

  if (keyCode === 16) { evt.returnValue = false; } else { if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) { } else { evt.returnValue = false; } } 

J'utilise ASP.NET 4.0.

Toute aide sera reçue avec gratitude.

Merci d'avance.

Vous pouvez vérifier si la touche Maj est pressée à l'aide de:

 if(evt.shiftKey) { ... //returns true if shift key is pressed