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

Posted

技术标签:

【中文标题】JQuery防止输入框上的多个反引号【英文标题】:JQuery Preventing Multiple Back Quotes on Input Box 【发布时间】: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。 【参考方案1】:

我认为它未检测到反引号的原因是您的键盘设置,我刚刚对此进行了测试并可以确认,将您的键盘设置更改为英语(英国)并使其成为默认键盘语言,我从英语更改(爱尔兰语)不会阻止输入反引号。当更改为英语(英国)时,它不允许我输入反引号。

    Windows 7 转到 -> 控制面板 时钟、地区和语言 更换键盘或其他输入法 键盘和语言选项卡 更换键盘 添加 -> 英语(英国)-> 键盘 -> 英国 点击应用 将其设置为默认键盘语言 转到语言栏 -> 选择英国 再次测试 j809 的小提琴。

所以keyCodes实际上是由键盘语言决定的,有道理美国键盘的经典例子@符号是SHIFT + 2,英国@符号是SHIFT +(哈希键左边的键)

Video Here

【讨论】:

这不是一个真正的答案(解决方案),而是发生这种情况的更多原因。

以上是关于JQuery防止输入框上的多个反引号的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本中反引号与双引号的·区别与联系

每日linux命令学习-引用符号(反斜杠,单引号'',双引号"")

反方向的单引号怎么打

寒假-8

关于js怎样替换反斜杠和单引号的问题

python脚本中单引号’ 双引号“ 三个单引号‘’‘ 三个双引号”“” 差别 及反斜杠的用法