使用JavaScript检测输入的字符

jci*_*sio 5 javascript keyboard multilingual jquery events

当用户输入'@'时,我想开始一个动作(启用自动完成).我有jQuery可用.

通常在QWERTY键盘上,它是这样的:

$('textarea').live('keydown', function(e) {
  if (e.which === 50) {
    console.log('@ has been entered.');
  }
});
Run Code Online (Sandbox Code Playgroud)

但是它在AZERTY键盘上无法正常工作.keyCode = 50对应于é~/2密钥.要在AZERTY键盘中键入"@",它是AltGr+ à@/0键.

编辑:在输入@时开始自动完成,并且仅在此之后开始.例如,当有人输入"Hello @"然后它会启动,但是当他输入"Hello @nothing else"时,完整版将不会执行任何操作.示例:http://mrkipling.github.com/jQuery-at-username/(它仅适用于QWERTY键盘).

Jon*_*nna 3

使用keypress而不是keydown. 虽然keydown与每次按键相关,但keypress与翻译的字符相关,因此例如a可以与按下按键a时不同shift,组合字符工作、死键工作以及处理键盘映射中的其他差异。