数字しか入力できない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キーを押しながら数字キーのいずれかを押すと、問題が発生します。返される値は、数字の上の文字の1つです。たとえば、Shiftキーを押しながら7を押すと、「&」が返されますが、keyCodeは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.NET4.0を使用しています。
どんな助けでもありがたいことに受けられるでしょう。
前もって感謝します。