有一个问题困扰了我将近 5 个小时,我对 JS 不是很熟悉,我不得不承认我真的需要帮助:
所以我得到了一个表单元素,我可以在其中输入一些文本。这里只允许数字和一些控件,所以 0 - 9 和左箭头、右箭头、del 和退格。其他一切都不应该出现。我的代码几乎可以工作,除了这些,我不能输入任何其他内容,除非 Capslock 处于活动状态并且我按 5 - 然后它输入 %。在绝望中,我尝试了一些非常奇怪的结构(你会在下面看到)并用我的请求折磨谷歌,发现了几十个关于它的线程(甚至在 stackoverflow 上也有一个),但没有解决方案。
现在我的小测试表如下所示:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(document).ready(function() {
$("#test").keypress(function(e) {
var code = e.keyCode ? e.keyCode : e.which;
console.log("keyCode: " + code + " | Shift: " + e.shiftKey + " | charCode:" + e.charCode);
if(e.shiftKey){
return false;
}
if(code == 20) {
return false;
}
if(e.charCode == 0) {
return true;
}
if(code != 8){
if(code != 46){
if(code != 37 && e.charCode == 0){
if(code != 39 && e.charCode == 0) {
if(code <= 48 || code >= 58){
return false;
}
}
}
}
}
});
});
</script>
</head>
<body>
<label>Input:<input type="text" id="test"></label>
</body>
</html>
我不能在这里使用 onKeyDown,因为 % 会返回 keyCode 53 ,这也会阻止 5 被输入。我也不能使用“数字”字段,因为我也想支持不知道这个属性的旧浏览器。
这么短:
- 允许所有数字
- 删除允许
- 允许左/右箭头
- 允许退格
- 其他一切都禁止
希望这里的任何人都知道这个问题的解决方案。正如我所说,我对 JavaScript 不是很熟悉,解决这个问题时遇到了一些麻烦。^^
jsfiddle在这里,稍微修改了原来的形式以便更好的显示。