tec*_*bar 21 javascript jquery keyevent dom-events
我正在开发一个应用程序,当用户在特定文本框上按CMD + LEFT时,我需要进行一些后处理.我需要在浏览器的默认功能之后执行此操作(即,在将插入符号放在当前物理行中的第一个位置之后).
问题keyup是没有被触发左边的键(或与此有关的任何键),只要CMD键被按下.
我用CTRL和SHIFT键尝试了这个,发现keyup按预期触发了辅助键.因此,如果您执行CTRL + LEFT然后释放LEFT然后释放CTRL,则总共有4个事件,2个keydowns和2个keyup.但是对于CMD密钥,我们得到2个keydowns,但只有一个keyup事件(当我们最后发布它时,CMD密钥本身就是一个).
我用SHIFT键尝试了这个,发现keyup按照预期的次序触发.所以,如果你SHIFT +左键,然后松开左键,然后松开SHIFT,你在总共4个事件,2个keydowns和2个keyups.但是对于CMD密钥,我们得到2个keydowns,但只有一个keyup事件(当我们最后发布它时,CMD密钥本身就是一个).
会是什么呢?keyup当CMD关闭时,有没有办法可以触发LEFT键(或任何键)?
我正在尝试使用OSX 10.9.5上的最新Google Chrome.Firefox上的行为也完全相同.所以这不是Chrome问题.
演示:http://jsfiddle.net/techfoobar/xu0o11nh/4/
实质上:
$('#mytextbox')
// this gets correctly triggered for the meta key as well as the secondary key
// when you press CMD and LEFT in sequence, you get two lines in the console one for
// the CMD key and one for the LEFT key
.keydown(function(_e) {
console.log('Keydown: ' + _e.keyCode);
})
// however, if I release the LEFT key (while keeping the CMD key down)
// this does NOT get triggered for the LEFT key
.keyup(function(_e) {
console.log('Keyup: ' + _e.keyCode);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2538 次 |
| 最近记录: |