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