Comment puis-je vérifier si une touche est pressée pendant l'événement click avec jQuery?
j'aimerais attraper un événement de clic avec jQuery et être capable de dire si une touche a été pressée en même temps pour que je puisse bifurquer dans la fonction de rappel basée sur l'événement keypress.
par exemple:
$("button").click(function() {
if([KEYPRESSED WHILE CLICKED]) {
// Do something...
} else {
// Do something different...
}
});
est-ce possible ou comment le faire si c'est possible?
91
demandé sur
Peter Mortensen
2010-03-15 10:25:46
3 réponses
vous pouvez facilement détecter les touches shift, alt et control à partir des propriétés de l'événement;
$("button").click(function(evt) {
if (evt.ctrlKey)
alert('Ctrl down');
if (evt.altKey)
alert('Alt down');
// ...
});
Voir quirksmode pour plus de propriétés. Si vous voulez détecter d'autres clés, voir réponse de cletus .
160
répondu
kkyy
2017-05-23 11:54:30
vous devez suivre séparément l'état de la clé en utilisant keydown()
et 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;
}
});
voir la liste des codes clés . Maintenant, vous pouvez vérifier que:
$("button").click(function() {
if (ctrlPressed) {
// do something
} else {
// do something else
}
});
43
répondu
cletus
2010-03-15 07:32:09
j'ai été capable de l'utiliser avec JavaScript seul
<a href="" onclick="return Show(event)"></a>
function Show(event) {
if (event.ctrlKey) {
alert('Ctrl down');
}
}
4
répondu
Arun Prasad E S
2017-02-17 03:56:01