我在避免输入中的特殊字符(Alt + Bloq.num -> ☺☻♥Check♣♠•◘○)时遇到问题。
我的输入声明如下:
<html:text styleId="inputMaxVol" styleClass="numeric"/>
这是我的 onReady
$(".numeric").keydown(function(event) {
return maskNumber();
});
这就是我试图完成这项工作的地方(没有成功)
function maskNumber() {
if (event) {
var charCode = (event.which)? event.which : event.keyCode;
console.log(charCode);
// If not a number
if ((charCode < 47 || charCode > 58) && (charCode < 95 || charCode > 105)) {
console.log("not a number");
return false;
} else if (event.altKey) {
//No special characters admitted
console.log("Alt pressed");
return false;
}
} else {
return false;
}
}
如果我按 Alt + 1(数字键盘上的“1”键),则会出现白色笑脸,并且在我的日志中会出现类似的内容
18
not a number
97
Alt pressed
我也尝试过 event.preventDefault() 但没有成功。知道我的问题出在哪里吗?
谢谢,我非常感谢您提供的任何帮助。
更新:正如评论中所解释的,解决方案是更改按键的按键事件并更改字符代码比较数字(现在仅当( charCode < 48 || charCode > 57
)由于返回的数字也发生了变化。
所以解决办法如下
$(".numeric").keypress(function(event) {
return maskNumber();
});
function maskNumber() {
if (event) {
var charCode = (event.which)? event.which : event.keyCode;
// If not a number
if (charCode < 48 || charCode > 57) {
return false;
}
} else {
return false;
}
}
就这么简单!
最佳答案
Try below code it will work on each browser or if you want to use library then visit this link: https://github.com/tzuryby/jquery.hotkeys
$("#txtmy").keypress(function(event) {
if (event.which.toString().length > 3) {
event.preventDefault();
return;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txtmy"/>
关于javascript - 当按下 Alt 键加上 Bloq 号码中的数字时,防止按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44886130/