【发布时间】:2014-07-29 10:13:01
【问题描述】:
我有以下代码,只允许用户从键盘输入任何数字
或数字键盘和一个小数点。它工作得很好,但我发现
它不会阻止输入多个反引号(请参阅 Esc 键下的 ` 按钮)。任何想法为什么以下不适用于KeyCode = 223?我使用 keydown() 事件调用以下函数,我使用的是 JQuery 1.10.2、Crome 和 Firefox。
var keyCode = event.which || event.keyCode;
var isShift = event.shiftKey ? true : false;
if(isShift){
switch(keyCode){
case 16:
break;
default:
//Allow user to use Shift and End 35, Home 36, Left Arrow 37, Right Arrow 39, Tab 9.
if(keyCode!= 35 && keyCode!= 36 && keyCode!= 37 && keyCode!= 39 && keyCode!= 9) {
event.preventDefault();
}
}
//Allow delete 46, Tab 9, Backspace 8, Shift 16, End 35, Home 36, Left Arrow 37, Right Arrow 39.
}else if(keyCode != 46 && keyCode != 9 && keyCode != 8 && keyCode != 16 && keyCode != 35 && keyCode != 36 && keyCode != 37 && keyCode != 39){
if(((keyCode != 190 && keyCode != 110) || $(inputBox).val().indexOf('.') != -1) && (keyCode < 48 || keyCode > 57 && keyCode != 96 && keyCode != 97 && keyCode != 98 && keyCode != 99 && keyCode != 100 && keyCode != 101 && keyCode != 102 && keyCode != 103 && keyCode != 104 && keyCode != 105)) {
event.preventDefault();
}
}
【问题讨论】:
-
我想这似乎可行。见here。
-
感谢添加小提琴。如果您查看您的示例,它仍然接受多个反引号 ``` 我试图阻止的字符!
-
在发布的 JSFiddle j809 中似乎可以正常工作?它仍然对你不起作用吗?
-
不,它不起作用,我仍然可以输入多个反引号,您使用的是 Crome 和 Esc 下的直接键吗?
-
我无法在那个小提琴中输入`字符,我在 OSX 上使用 Chrome。