通过keydown识别非拉丁字符

时间:2012-12-25 09:19:37

标签: events firefox keydown non-latin

某些浏览器存在问题,例如Firefox。

代码:

$(document).ready(function(){
     $(this).keydown(function(e){         // Or keyup or keypress
          alert(***look at output***);
     }
}

当键入非拉丁字符为“<” - “б” - “Б”(俄语)显示:

keydown    keyCode=0 which=0 charCode=0
keypress   keyCode=0 which=1073 charCode=1073 char=б
keyup      keyCode=0 which=0 charCode=0 

Chrome中的相同字符显示:

keydown    keyCode=188 which=188 charCode=0
keypress   keyCode=1073 which=1073 charCode=1073 char=б
keyup      keyCode=188 which=188 charCode=0

问题: 在不使用keypress的情况下识别所有浏览器中的keydown处理程序(因为不同的键盘布局上有不同的charCodes)。

1 个答案:

答案 0 :(得分:0)

解决了,但是有按键。通过监听firefox bug专用的按键手柄,当用西里尔语键盘布局不起作用“<”,“>”。

解决方案:按键盘按钮我们同时听keydown和keypress handels。如果按下西里尔字符,则firefox keyCode输出为0,keydown忽略它。另一方面,keypress采用keyCode == 0并输出“<”或“>”。