event.keyCode返回土耳其字符“ö”的逗号(188)的值

时间:2013-07-08 14:11:41

标签: javascript google-chrome keycode

我有一个Javascript函数,可以监听 keydown 事件,并根据按下的键执行。

我的问题如下:

Chrome 中,当我按下ö时,这是一个土耳其字符,其keyCode 246 event.keyCode < / strong>返回 188 ,这是逗号(,)字符的代码。 (Firefox返回0但这对我来说不是问题,因为它与逗号不同。)

所以我的问题是如何区分“ö”字符与Chrome中的逗号?或者有没有办法在keydown事件上获得原始的keyCode 246?

提前致谢。

3 个答案:

答案 0 :(得分:2)

如果您想获取ASCII码,您必须收听keypress事件并使用event.charCode

keydown事件未提供charCode,因为这两种事件类型之间存在一些差异:

  

理论上,keydown和keyup事件表示按下或释放的键,而keypress事件表示正在键入的字符。在所有浏览器中,该理论的实现并不相同。

Source

答案 1 :(得分:1)

您应该使用event.originalEvent.keyIdentifier方法。 “ö”和逗号有不同的keyIdentifiers。

答案 2 :(得分:1)

对于这类问题,

Here是一个很好的答案。 我在这里看到两个规则:

  • 检测可靠输入的字符,使用keypress(使用charCode)
  • 检测不可打印的字符,如箭头,使用keydown(使用keyCode)