gpt4 book ai didi

javascript - 用于验证文本框的 Jquery 代码无法正常工作

转载 作者:行者123 更新时间:2023-12-02 19:21:51 24 4
gpt4 key购买 nike

我正在验证文本框,使其只能包含字母、数字和这些特殊字符: ` 、 - 。 '~

我为此使用了 Jquery 'key-down' 事件。如果用户输入无效字符,我会阻止它显示在文本框中。为了仅启用波浪号并禁用其他特殊字符,我应该检测是否按住了 Shift 键。我为此使用了 bool 变量。

问题是它允许输入其他特殊字符,如 !、$。它不会进入 ValidateKeyDown 中的 isShiftPressed == true 条件。我在其中放置了一个警报,但它没有执行。

这是我的代码:

$.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;
}
});
});
};

最佳答案

我注意到 e.shiftKey 仅在按键时返回 true,因此 isShiftPressed 始终为 false。试试这个吧

$.fn.ValidateInput = function () {
return this.each(function () {

$(this).keydown(function (e) {
var n = e.keyCode;

if (n == 16) {
isShiftPressed = true;
return;
}

if (!isShiftPressed) {
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) {
if (n != 192) {
e.preventDefault(); // Prevent character input
return false;
}
}
return true;
})
.keyup(function (e) {
if (e.keyCode == 16) {
isShiftPressed = false;
}
});
});
};

注意:我还组合了 ValidateKeyup 和 ValidateKeydown,但这应该不重要。

关于javascript - 用于验证文本框的 Jquery 代码无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com