文字、数字、およびこれらの特殊文字のみを含めることができるように、テキスト ボックスを検証しています: ` 、 - 。' ~
これには Jquery の「キーダウン」イベントを使用しています。ユーザーが無効な文字を入力した場合、テキスト ボックスに表示されないようにします。チルダだけを有効にし、他の特殊文字を無効にするには、シフト キーが押されているかどうかを検出する必要があります。これにはブール変数を使用しました。
問題は、!、$ などの他の特殊文字を入力できるようになっているisShiftPressed == true
ことですValidateKeyDown
。その中にアラートを入れましたが、実行されませんでした。
これは私のコードです:
$.fn.ValidateKeyDown = function () {
return this.each(function () {
$(this).keydown(function (e) {
if (e.shiftKey) {
isShiftPressed = true;
return;
}
else if (isShiftPressed == false) {
var n = e.keyCode;
if (!((n == 8) // backspace
|| (n == 9) // Tab
|| (n == 46) // delete
|| (n >= 35 && n <= 40) // arrow keys/home/end
|| (n >= 65 && n <= 90) // alphabets
|| (n >= 48 && n <= 57) // numbers on keyboard
|| (n >= 96 && n <= 105) // number on keypad
|| (n == 109) //(- on Num keys)
|| (n == 189) || (n == 190) || (n == 222) || (n == 192) //hypen,period,apostrophe,backtick
)
) {
e.preventDefault(); // Prevent character input
return false;
}
}
else if (isShiftPressed == true) {
var n = e.keyCode;
if (n != 192) {
e.preventDefault(); // Prevent character input
return false;
}
}
return true;
});
});
};
$.fn.ValidateKeyUp = function () {
return this.each(function () {
$(this).keyup(function (e) {
if (e.shiftKey) {
isShiftPressed = false;
}
});
});
};