Touche de prise de vue appuyez sur sans placer un élément de saisie sur la page?
Comment capturer les clés de la presse, par exemple, Ctrl+Z, sans placer l'élément d'entrée sur la page en JavaScript? Semble que dans IE, keypress et keyup événements ne peut être lié à des éléments d'entrée (les boîtes de saisie, ces zones de texte, etc)
- vous ne devriez pas en avoir besoin.
- Pourquoi pas...... ?
- Car il serait peu conventionnelle pour effectuer des actions lorsque celles keycombos est enfoncée lorsqu'un élément graphique n'est pas une priorité, violant ainsi le Principe De moindre Surprise.
- Il y a d'autres éléments pour lesquels on peut raisonnablement vouloir gérer les événements clés, tels que
<canvas>
, même si je suis d'accord que cet élément doit être forcée à avoir le focus avant d'émettre des événements-clés. À l'aide d'untabindex
attribut permet d'obtenir un élément reçoit le focus si c'est le contraire de l'impossibilité d'. - Je recommanderais le Keypress de la bibliothèque javascript: dmauro.github.io/Keypress
- Une autre raison pour capturer entrée clavier si votre seul l'affichage de code à barres sur l'écran et à l'aide d'un scanner de code à barres que votre clavier. Ce que je fais.
- La plupart des applications de clavier les raccourcis sans un focus d'entrée. Le sens commun. Prendre CTRL-Z-à-dire ANNULER, par exemple.
Vous devez vous connecter pour publier un commentaire.
jQuery dispose également d'une excellente mise en œuvre qui est incroyablement facile à utiliser. Voici comment vous pouvez implémenter cette fonctionnalité dans les navigateurs:
Testé dans IE7,Firefox 3.6.3 & Chrome 4.1.249.1064
Une autre façon de faire cela est d'utiliser l'événement keydown et à suivre l'événement.mot de code. Cependant, depuis jQuery normalise keyCode et charCode aide de l'événement.ce qui, leur spec recommande l'utilisation de l'événement.qui dans une variété de situations:
keydown
événement et la vérification de sakeyCode
propriété vous donnera beaucoup plus de résultats uniformes sur tous les navigateurs.Pour les non-imprimable clés telles que les touches fléchées et les touches de raccourci comme Ctrl-z, Ctrl-x, Ctrl-c, qui peuvent déclencher une action dans le navigateur (par exemple, à l'intérieur des documents éditables ou éléments), vous ne pouvez pas obtenir à un événement keypress dans tous les navigateurs. Pour cette raison, vous devez utiliser
keydown
au lieu de cela, si vous êtes intéressé à en supprimant le navigateur par défaut de l'action. Si non,keyup
fera très bien l'affaire.De la fixation d'un
keydown
événement àdocument
fonctionne dans tous les principaux navigateurs:Pour une référence complète, je recommande fortement Jan Wolter de l'article sur le JavaScript gestion des clés.
Détecter les clés de la presse, y compris des combinaisons de touches:
Avantage ici est que vous pas écraser toutes les propriétés à l'échelle mondiale, mais au lieu de simplement l'introduction d'un effet secondaire. Pas bon, mais certainement beaucoup moins infâme que d'autres suggestions sur ici.
Code & détecte les touches ctrl+z
Moderne JS, utilisez
event.key
!Mozilla Docs
Navigateurs Pris En Charge
document.onkeydown=keyDown;
document.onkeypress=pression de touche;
etc.
Fonctionne pour moi dans IE
keyDown
etkeyPress
sont. Cela provoquera une erreur.