Comment détecter lorsque l'une des touches fléchées est enfoncée? Je l'ai utilisé pour découvrir:
function checkKey(e) {
var event = window.event ? window.event : e;
console.log(event.keyCode)
}
Bien que cela ait fonctionné pour toutes les autres clés, il ne l'a pas été pour les touches fléchées (peut-être parce que le navigateur est censé faire défiler ces touches par défaut).
javascript
keypress
keyboard-events
mihsathe
la source
la source
keypress
événements pour les touches fléchées, mais vous avez raison, celakeydown
fonctionne toujours pour les touches fléchées.53
avec unkeydown
événement. Vous obtenez37
aveckeypress
, ce qui est différentonkeyup
et arrêtez l'événement là-bas. En réalité, vous ne devriez cependant pas modifier le comportement de l'interface utilisateur avec Javascript.Fonction d'appel de haut en bas. Il existe différents codes pour chaque touche.
la source
e = e ? e : window.event;
Ou:if (typeof(e) === "undefined") { e = window.event; }
keyCode === 32
, paskeyCode == '32'
oukeyCode === '32'
.event.key === "ArrowRight" ...
Plus récent et beaucoup plus propre: utilisation
event.key
. Plus de codes numériques arbitraires! Si vous transpilez ou savez que vos utilisateurs sont tous sur des navigateurs modernes, utilisez ceci!Manipulation verbeuse:
Vous pouvez facilement l'étendre pour vérifier
"w", "a", "s", "d"
, ou toute autre cléDocuments Mozilla
Navigateurs pris en charge
PS
event.code
est le même pour les flèchesla source
key
et nonkeyCode
, c'était obsolète.Peut-être la formulation la plus ters:
Démo (merci à l'utilisateur Angus Grant): http://jsfiddle.net/angusgrant/E3tE6/
Cela devrait fonctionner sur plusieurs navigateurs. Laissez un commentaire s'il existe un navigateur où il ne fonctionne pas.
Il existe d'autres façons d'obtenir le code clé (e.which, e.charCode et window.event au lieu de e), mais elles ne devraient pas être nécessaires. Vous pouvez en essayer la plupart sur http://www.asquare.net/javascript/tests/KeyCode.html . Notez que event.keycode ne fonctionne pas avec onkeypress dans Firefox, mais il fonctionne avec onkeydown.
la source
Utilisez
keydown
, paskeypress
pour les touches non imprimables telles que les touches fléchées:La meilleure référence d'événement clé JavaScript que j'ai trouvée (en repoussant le pantalon par quirksmode, par exemple) est ici: http://unixpapa.com/js/key.html
la source
Réponse moderne puisque keyCode est désormais déconseillé en faveur de key :
la source
Je pense que la méthode la plus récente serait:
Cela suppose que le développeur souhaite que le code soit actif n'importe où sur la page et que le client doit ignorer toute autre pression sur une touche. Éliminez l'événement.preventDefault (); si les touches, y compris celles prises par ce gestionnaire, doivent toujours être actives.
la source
la source
arrs
dehors de la fonction? Pas besoin de le recréer à chaque appelVoici un exemple d'implémentation:
la source
var targetElement = typeof $0 !== 'undefined' ? $0 : document.body;
ou juste:var targetElement = document.body;
est okVoici comment je l'ai fait:
la source
J'ai pu les piéger avec jQuery:
Un exemple: http://jsfiddle.net/AjKjU/
la source
keypress
ne fonctionnera pas avec les touches fléchées. Vous devez utiliser à la$(document).on('keydown', function() {...})
placeC'est le code de travail pour Chrome et Firefox
la source
Je cherchais également cette réponse jusqu'à ce que je tombe sur ce post.
J'ai trouvé une autre solution pour connaître le code clé des différentes clés, grâce à mon problème. Je voulais juste partager ma solution.
Utilisez simplement l'événement keyup / keydown pour écrire la valeur dans la console / alerte de la même manière
event.keyCode
. comme-- rupam
la source
C'est plus court.
function IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
la source
if ([37,38,39,40].indexOf(e.keyCode)!=-1){ console.log('arrow pressed') }
Cette bibliothèque est géniale! https://craig.is/killing/mice
Vous devez cependant appuyer sur la séquence un peu rapidement pour mettre en surbrillance le code dans cette page.
la source
Re répond que vous n'avez
keydown
pas besoinkeypress
.En supposant que vous vouliez déplacer quelque chose en continu pendant que la touche est enfoncée, je trouve que cela
keydown
fonctionne pour tous les navigateurs sauf Opera. Pour Opera,keydown
ne se déclenche qu'au 1er appui. Pour permettre l'utilisation d'Opera:la source
Les touches fléchées sont déclenchées lors de la frappe
onkeydown permet ctrl, alt, merde
onkeyup permet l'onglet, les flèches vers le haut, les flèches vers le bas, les flèches vers la gauche, les flèches vers le bas
la source
Si vous utilisez jquery, vous pouvez également faire comme ça,
la source
contrôler les codes clés
%=37
et&=38
... et seulement les touches fléchées gauche = 37 haut = 38la source
Si vous voulez détecter les touches fléchées mais n'avez pas besoin de spécificités en Javascript
la source
Avec clé et ES6.
Cela vous donne une fonction distincte pour chaque touche fléchée sans utiliser de commutateur et fonctionne également avec les touches 2,4,6,8 du pavé numérique lorsqu'il
NumLock
est activé .la source