我有以下代码,只允许用户从键盘输入任何数字
或Num Pad和单个小数点。它运作得相当好,但我发现了
它不会阻止输入多个后引号(参见Esc键下的`按钮)。任何想法为什么以下不适用于
KeyCode = 223
?我使用keydown()事件并使用i' m 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();
}
}
答案 0 :(得分:0)
我认为它没有检测到反引号的原因是你的键盘设置,我刚测试了这个并且可以确认,将键盘设置更改为英语(英国)并使其成为默认键盘语言,我改为英语(爱尔兰语)不会阻止进入的反击。当改为英语(英国)时,它不允许我输入反引号。
所以keyCodes实际上是由键盘语言决定的,理解美国键盘的经典例子@符号是SHIFT + 2,UK @符号是SHIFT +(Hash Key左边的键)