dan*_*ith 102 keyboard jquery events click
我想用jQuery捕获一个click事件,并能够判断是否同时按下了一个键,这样我就可以根据keypress事件在回调函数中进行分支.
例如:
$("button").click(function() {
if([KEYPRESSED WHILE CLICKED]) {
// Do something...
} else {
// Do something different...
}
});
Run Code Online (Sandbox Code Playgroud)
这有可能吗?如果可能的话怎么办呢?
kky*_*kyy 171
您可以从事件属性轻松检测shift,alt和control键;
$("button").click(function(evt) {
if (evt.ctrlKey)
alert('Ctrl down');
if (evt.altKey)
alert('Alt down');
// ...
});
Run Code Online (Sandbox Code Playgroud)
有关更多属性,请参阅quirksmode.如果要检测其他键,请参阅cletus的答案.
cle*_*tus 47
您需要使用keydown()
和单独跟踪密钥状态keyup()
:
var ctrlPressed = false;
$(window).keydown(function(evt) {
if (evt.which == 17) { // ctrl
ctrlPressed = true;
}
}).keyup(function(evt) {
if (evt.which == 17) { // ctrl
ctrlPressed = false;
}
});
Run Code Online (Sandbox Code Playgroud)
请参阅密钥代码列表.现在您可以检查:
$("button").click(function() {
if (ctrlPressed) {
// do something
} else {
// do something else
}
});
Run Code Online (Sandbox Code Playgroud)
我只能用JavaScript来使用它
<a href="" onclick="return Show(event)"></a>
function Show(event) {
if (event.ctrlKey) {
alert('Ctrl down');
}
}
Run Code Online (Sandbox Code Playgroud)
在不窃取@Arun Prasad 的雷霆的情况下,这里是我重新哈希的纯 JS 片段,以停止默认操作,否则如果按下 CTL+click ,则会打开一个新窗口。
function Show(event)
{
if (event.ctrlKey)
{
alert('Ctrl held down which clicked');
}
else
{
alert('Ctrl NOT pressed');
}
return false
}
Run Code Online (Sandbox Code Playgroud)
<p>Hold down CTL on the link to get a different message</p>
<a href="" onclick="return Show(event)">click me</a>
Run Code Online (Sandbox Code Playgroud)