Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery防止输入框上出现多个反引号_Jquery_Keydown_Keycode - Fatal编程技术网

JQuery防止输入框上出现多个反引号

JQuery防止输入框上出现多个反引号,jquery,keydown,keycode,Jquery,Keydown,Keycode,我有以下代码,只允许用户从键盘输入任何数字 或数字填充和单小数点。它工作得相当好,但我发现 它不会阻止输入多个反引号(请参见Esc键下的“按钮”)。你知道为什么下面的代码不适用于KeyCode=223?我使用keydown()事件调用以下函数,并使用JQuery 1.10.2、Crome和Firefox var keyCode = event.which || event.keyCode; var isShift = event.shiftKey ? true : false; if(isShi

我有以下代码,只允许用户从键盘输入任何数字 或数字填充和单小数点。它工作得相当好,但我发现 它不会阻止输入多个反引号(请参见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();
            }
}   
var-keyCode=event.which | | event.keyCode;
var isShift=event.shiftKey?真:假;
如果(isShift){
开关(钥匙代码){
案例16:
打破
违约:
//允许用户使用Shift和End 35、Home 36、左箭头37、右箭头39、选项卡9。
如果(keyCode!=35&&keyCode!=36&&keyCode!=37&&keyCode!=39&&keyCode!=9){
event.preventDefault();
}
}
//允许删除46,选项卡9,退格8,移位16,结束35,起始36,左箭头37,右箭头39。
}如果(keyCode!=46&&keyCode!=9&&keyCode!=8&&keyCode!=16&&keyCode!=35&&keyCode!=36&&keyCode!=37&&keyCode!=39){
如果(((keyCode!=190&&keyCode!=110)输入框.val().indexOf('.')!=1)和(keyCode<48&&keyCode>57&&keyCode!=96&&keyCode!=98&&keyCode!=99&&keyCode!=100&&keyCode!=101&&keyCode!=102&&keyCode!=103&&keyCode!=104&&keyCode!=105)){
event.preventDefault();
}
}   

我认为它没有检测到倒勾的原因是您的键盘设置,我刚刚测试了这一点,可以确认,将您的键盘设置更改为英语(英国)并使其成为默认键盘语言,我更改了英语(爱尔兰语),这不会阻止输入倒勾。当更改为英语(英国)时,它将不允许我输入反勾号

  • 视窗7
  • 转到->控制面板
  • 时钟、地区和语言
  • 更改键盘或其他输入方法
  • 键盘和语言选项卡
  • 换键盘
  • 添加->英语(英国)->键盘->英国
  • 单击应用
  • 将其设置为默认键盘语言
  • 进入语言栏->选择英国
  • 再次测试j809的小提琴
  • 因此,键盘代码实际上是由键盘语言决定的,这是有意义的。美国键盘的经典示例@symbol是SHIFT+2,英国@symbol是SHIFT+(散列键左边的键)


    我想这似乎奏效了。看,谢谢你,或者加了把小提琴。如果你看一下你的例子,它仍然接受多个反引号“``字符,这是我试图阻止的!在发布的JSFIDDLEJ809中,它似乎按照您的意愿工作?对你来说,它仍然不起作用吗?不,它不起作用,我仍然能够输入多个反引号,你是否直接使用Crome和Esc下的键?我无法在小提琴中输入字符,我正在OSX上使用Chrome。这不是一个真正的答案(解决方案),但更多的原因是为什么会发生这种情况。