我正在尝试捕捉在屏幕上显示之前插入的字符以验证屏幕。看我的代码
_this.on('keypress keydown',function(e){
var t = e.target;
var k = e.which || e.keyCode;
var c = String.fromCharCode(k);
console.log(String.fromCharCode(k))
});
如果我输入~
或任何其他标点字符,则会返回非拉丁字符,例如å
。我在Ubuntu的Chromium上。
我注意到使用这些特殊字符忽略了按键,这是一种耻辱,这也是我尝试使用keydown的原因。但是keydown无法检测到正确的角色并将其转换为斯堪的纳维亚和亚洲角色。
是否有解决方法来获得正确的角色?
答案 0 :(得分:3)
请参阅this wonderful answer一个类似的问题,以及相关的jsfiddle:http://jsfiddle.net/S2dyB/17/
一个问题是keypress
和keydown
事件不可互换。 keypress
用于检索键入的实际字符(因此忽略特殊键),而keydown
返回键盘上每个键的唯一字符代码。为了加剧这种情况,不同的浏览器会以不同的方式处理每个事件,使其变得非常混乱。
了解e.which
与keydown
之间keypress
的变化情况:http://jsfiddle.net/9TyzP/
正如您所看到的,它们很少匹配 - 并且对于许多键,keypress
的显示代码根本没有变化,表明该事件没有触发该键。