Pet*_*vin 85 javascript jquery
我有一个调用JavaScript函数的锚标记.
无论是否使用JQuery,如何在单击链接时确定shift键是否已关闭?
以下代码不起作用,因为只有按下"真实键"(不是shift键)才会触发按键.(我希望如果仅按下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
}
Run Code Online (Sandbox Code Playgroud)
hlu*_*luk 97
$(document).on('keyup keydown', function(e){shifted = e.shiftKey} );
Run Code Online (Sandbox Code Playgroud)
Jsi*_*inh 69
以下是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
Run Code Online (Sandbox Code Playgroud)
并非所有浏览器都能很好地处理keypress事件,因此请使用key up或key down事件,如下所示:
$(document).keydown(function (e) {
if (e.keyCode == 16) {
alert(e.which + " or Shift was pressed");
}
});
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 25
对于鼠标事件,我知道在Firefox中,至少事件对象上的"shiftKey"属性会告诉您shift键是否已关闭.它在MSDN上有记录,但我没有永远尝试过,所以我不记得IE是否正确.
因此,您应该能够在"click"处理程序中检查事件对象上的"shiftKey".
ton*_*and 23
我遇到了类似的问题,尝试捕获'shift + click',但由于我使用的是带有回调而不是标准click
处理程序的第三方控件,因此我无法访问事件对象及其关联e.shiftKey
.
我最终处理鼠标按下事件以记录移位,然后在我的回调中使用它.
var shiftHeld = false;
$('#control').on('mousedown', function (e) { shiftHeld = e.shiftKey });
Run Code Online (Sandbox Code Playgroud)
发布以防万一其他人最终在这里寻找这个问题的解决方案.
我已经使用一种方法来测试是否通过将当前按下的键代码存储在数组中来按下任何特定键:
var keysPressed = [],
shiftCode = 16;
$(document).on("keyup keydown", function(e) {
switch(e.type) {
case "keydown" :
keysPressed.push(e.keyCode);
break;
case "keyup" :
var idx = keysPressed.indexOf(e.keyCode);
if (idx >= 0)
keysPressed.splice(idx, 1);
break;
}
});
$("a.shifty").on("click", function(e) {
e.preventDefault();
console.log("Shift Pressed: " + (isKeyPressed(shiftCode) ? "true" : "false"));
});
function isKeyPressed(code) {
return keysPressed.indexOf(code) >= 0;
}
Run Code Online (Sandbox Code Playgroud)
为了检查在用鼠标单击时是否按下了 shiftkey ,单击事件对象中有一个确切的属性:shiftKey(以及 ctrl 和 alt 和元键):https : //www.w3schools.com/jsref/event_shiftkey .asp
所以使用jQuery:
$('#anchor').on('click', function (e) {
if (e.shiftKey) {
// your code
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
103345 次 |
最近记录: |