到目前为止,我一直在使用物理键盘在模拟器中尝试。这导致了这个问题。但是,使用软键盘可以根据需要使用。 keyup
事件定义明确keyCode
。
请在this pen
找到代码 <input type="text" id="test">
var test = document.getElementById('test');
test.addEventListener('keyup', function(e) {
alert(e.keyCode);
});
iOS safari显示0
作为任何按键(keyup
事件)的keyCode。任何指针都会非常有用。
更新
e.keyCode
以及e.which
适用于keypress
事件,但我无法使用keyup
事件。
答案 0 :(得分:6)
e.keyCode
事件,实际设备和模拟器中都存在 keyup
。
但是,在模拟器中,如果使用物理键盘,则e.keyCode
设置为zero
。
答案 1 :(得分:4)
使用e.which
代替e.keyCode
。
修改:要规范化此值,您可以使用e.keyCode || e.which
。
答案 2 :(得分:0)
我可以使用{
path: '',
redirectTo: 'create',
pathMatch : 'full'
}
使它与keyup
和keydown
一起使用,它返回按下的键(例如e.key
或/
)。
我能够通过使用远程调试器检查事件对象来弄清这一点。
我签入了最新的Chrome,Firefox,iOS Safari和macOS Safari,它们都通过a
报告密钥。
编辑:
e.key
和keyup
现在无法使用。我想我用远程调试器之类的东西来解决问题。但是,我已经找到了一种适用于我的用例的替代解决方案。
我想在按keydown
时集中输入。我采用了绑定到/
的上述解决方案,但是由于未触发keypress
事件,因此将键输入到输入中。只需致电keyup
就可以很好地解决我的问题。我仍然可以在e.preventDefault()
上与e.key == '/'
事件进行比赛!