我在输入中避免使用特殊字符(Alt +数字来自Bloq。num - >☺☻♥♦♣♠•◘○)时遇到问题。
我的输入声明如下:
<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()但没有成功。对我的问题在哪里有任何想法?
谢谢,非常感谢您提供的任何帮助。
更新:正如评论中所解释的那样,解决方案是更改keypress的keydown事件并更改charcode比较数字(现在仅当因为(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;
}
}
这很简单!
答案 0 :(得分:3)
尝试以下代码,它可以在每个浏览器上使用,或者如果您想使用库,请访问此链接: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"/>
答案 1 :(得分:0)
返回false不会禁用该事件。
您需要执行event.preventDefault()
,以阻止事件发生,而不是返回false。
event.preventDefault();
return false
适用于表单的onbeforesubmit
事件。