首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery keyup按住shift键和数字键盘键

jquery keyup按住shift键和数字键盘键
EN

Stack Overflow用户
提问于 2015-01-12 23:46:09
回答 3查看 905关注 0票数 3

按住Shift键时,我无法获得某些数字键盘键的正确代码。仅当数字锁定键打开时,数字键盘上的数字键和point/del键才会发生这种情况。

代码语言:javascript
复制
$('body').keyup(function (e) {

            alert('key code ' + e.keyCode + '  ewhich: ' + e.which);
});

打开num-lock:

Shift + numberPad1输出代码16,对于键盘上的所有数字键和point/del键也是如此。

对此有什么解释吗?

使用CHROME

EN

回答 3

Stack Overflow用户

发布于 2020-10-21 19:25:33

在Windows上,Shift+Numpad(0-9)具有不同的功能,因为Shift键暂时覆盖了'Numlock=ON‘状态。例如,Shift+Numpad1将注册为"End“并释放Shift键。这让我头疼了两年半,因为我一直在尝试使用我在Mac上使用的应用程序的快捷键,而在Windows上使用相同的应用程序时,我也会使用相同的快捷键。

票数 2
EN

Stack Overflow用户

发布于 2015-01-13 01:40:27

当你按上最后一个键时,KeyUp事件将会被触发,这意味着当你按下shift+numpad1时,shift ket会在最后一个键上,这就是为什么你会得到16个代码。

使用Keydown事件可以给出准确的结果。你想跟踪shift +键的代码,那么你必须分别使用shift键

Exp-

函数$(文档).ready(

(){

$("body").keydown(function (e) {console.log(‘键码’+ e.keyCode +‘ewhich:’+ e.which);});});

票数 0
EN

Stack Overflow用户

发布于 2015-01-13 01:55:01

我在这里测试。在这种情况下,可能是在keyup上传递了两次,一次是你想要的键,另一次是shift。试着忽略代码16,它会工作得很好。

代码语言:javascript
复制
$('body').keyup(function (e) {
  if(!e.keyCode == 16)
    console.log('key code ' + e.keyCode + ' shiftKey' + e.shiftKey);
});

或者尝试使用按键

代码语言:javascript
复制
$('body').keypress(function (e) {
  console.log('key code ' + e.keyCode + ' shiftKey' + e.shiftKey);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27905705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档