4

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

我的问题如下:

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

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

提前致谢。

4

3 回答 3

2

如果你想获得 ASCII 码,你必须监听keypress事件并使用event.charCode.

keydown事件不提供,charCode因为这两种事件类型之间有一点区别:

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

资源

于 2017-01-19T18:55:05.130 回答
1

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

于 2015-10-21T07:09:01.323 回答
1

对于这类问题,这里有一个很好的答案。我在这里看到两个规则:

  • 要检测可靠键入的字符,请使用 keypress (with charCode)
  • 要检测箭头等不可打印字符,请使用 keydown(带 keyCode)
于 2017-05-10T07:05:25.133 回答