我正在验证文本框,以便它们只能包含字母、数字和这些特殊字符:` 、 - 。'~
我为此使用了 Jquery 'key-down' 事件。如果用户输入了无效字符,我会阻止它出现在文本框中。为了仅启用波浪号并禁用其他特殊字符,我应该检测是否按住了 shift 键。我为此使用了一个布尔变量。
问题是它允许输入其他特殊字符,如!、$、。它没有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;
}
});
});
};