现在有一个问题困扰了我近5个小时,我对JS并不熟悉,我不得不承认我真的需要帮助:
所以我有一个表单元素,我可以输入一些文本。这里只允许数字和一些控件,所以0 - 9和左箭头,右箭头,del和退格。其他一切甚至都不应该出现。我的代码几乎可以工作,我不能输入除此之外的任何东西,除了Capslock处于活动状态并按下5 - 然后输入%。在我的绝望中,我尝试了一些非常奇怪的结构(你会在下面看到它)并用我的请求折磨google,发现了几十个关于它的线程(其中一个甚至在stackoverflow上),但没有解决方案。
现在我的小testform看起来像这样:
<!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 here,稍微修改了原始表单以便更好地显示。