0

某些浏览器存在问题,例如 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

问题: 在所有浏览器中识别 keydown 处理程序,而不使用按键(因为不同键盘布局上的不同字符代码)。

4

1 回答 1

0

已解决,但需要按键。通过监听 firefox bug 的特殊按键句柄,当西里尔文键盘布局不起作用时,“<”、“>”。

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

于 2012-12-26T06:36:02.340 回答