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防止输入框上的多个反引号的主要内容,如果未能解决你的问题,请参考以下文章