首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery或JavaScript:如何确定在单击锚定标签超链接时是否按下了shift键?

JQuery或JavaScript:如何确定在单击锚定标签超链接时是否按下了shift键?
EN

Stack Overflow用户
提问于 2010-09-24 01:48:22
回答 10查看 119.3K关注 0票数 96

我有一个调用JavaScript函数的锚标记。

使用或不使用JQuery时,如何确定在单击链接时是否按下了shift键?

以下代码不起作用,因为只有在按下"real key“(而不是shift键)时才会触发keypress。(我希望如果只按下shift键,它就会触发。)

var shifted = false;

$(function() {                           
    $(document).keypress(function(e) {
        shifted = e.shiftKey;
        alert('shiftkey='+e.shiftkey);
    });

    $(document).keyup(function(e) {
        shifted = false;
    });
}

...

function myfunction() {
  //shift is always false b/c keypress not fired above
}
EN

回答 10

Stack Overflow用户

发布于 2010-09-24 02:09:38

    $(document).on('keyup keydown', function(e){shifted = e.shiftKey} );
票数 107
EN

Stack Overflow用户

发布于 2010-09-24 02:21:19

下面是JavaScript中每个击键的按键代码。您可以使用它来检测用户是否按下了Shift键。

backspace           8
tab                 9
enter               13
shift               16
ctrl                17
alt                 18
pause/break         19
caps lock           20
escape              27
page up             33
page down           34
end                 35
home                36
left arrow          37
up arrow            38
right arrow         39
down arrow          40
insert              45
delete              46
0                   48
1                   49
2                   50
3                   51
4                   52
5                   53
6                   54
7                   55
8                   56
9                   57
a                   65
b                   66
c                   67
d                   68
e                   69
f                   70
g                   71
h                   72
i                   73
j                   74
k                   75
l                   76
m                   77
n                   78
o                   79
p                   80
q                   81
r                   82
s                   83
t                   84
u                   85
v                   86
w                   87
x                   88
y                   89
z                   90
left window key     91
right window key    92
select key          93
numpad 0            96
numpad 1            97
numpad 2            98
numpad 3            99
numpad 4            100
numpad 5            101
numpad 6            102
numpad 7            103
numpad 8            104
numpad 9            105
multiply            106
add                 107
subtract            109
decimal point       110
divide              111
f1                  112
f2                  113
f3                  114
f4                  115
f5                  116
f6                  117
f7                  118
f8                  119
f9                  120
f10                 121
f11                 122
f12                 123
num lock            144
scroll lock         145
semi-colon          186
equal sign          187
comma               188
dash                189
period              190
forward slash       191
grave accent        192
open bracket        219
back slash          220
close braket        221
single quote        222

并非所有浏览器都能很好地处理按键事件,因此请使用key up或key down事件,如下所示:

$(document).keydown(function (e) {
    if (e.keyCode == 16) {
        alert(e.which + " or Shift was pressed");
    }
});
票数 78
EN

Stack Overflow用户

发布于 2010-09-24 01:54:51

对于鼠标事件,我知道在Firefox中,至少事件对象上的"shiftKey“属性会告诉你shift键是否按下了。它在MSDN上有文档记录,但是我从来没有尝试过,所以我不记得IE做得对不对。

因此,您应该能够在“单击”处理程序中检查事件对象上的"shiftKey“。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3781142

复制
相关文章

相似问题

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