Comment savoir si le verrouillage des majuscules est activé à l'aide de JavaScript?
Une mise en garde cependant: je l'ai fait sur Google et la meilleure solution que j'ai pu trouver était d'attacher un onkeypress
événement à chaque entrée, puis de vérifier à chaque fois si la lettre appuyée était en majuscule, et si c'était le cas, puis de vérifier si le décalage était également maintenu enfoncé. Dans le cas contraire, le verrouillage des majuscules doit être activé. C'est vraiment sale et juste ... du gaspillage - il y a sûrement une meilleure façon que ça?
javascript
keyboard
capslock
nickf
la source
la source
input type=password
input type=email
Réponses:
Vous pouvez l'essayer .. Ajout d'un exemple de travail. Lorsque la mise au point est sur l'entrée, l'activation du verrouillage des majuscules fait que la LED devient rouge, sinon verte. (Non testé sur mac / linux)
REMARQUE: les deux versions fonctionnent pour moi. Merci pour vos contributions constructives dans les commentaires.
ANCIENNE VERSION: https://jsbin.com/mahenes/edit?js,output
En outre, voici une version modifiée (quelqu'un peut-il tester sur mac et confirmer)
NOUVELLE VERSION: https://jsbin.com/xiconuv/edit?js,output
NOUVELLE VERSION:
ANCIENNE VERSION:
fonction isCapslock (e) {
}
Pour les caractères internationaux, une vérification supplémentaire peut être ajoutée pour les clés suivantes selon les besoins. Vous devez obtenir la plage de codes clés pour les caractères qui vous intéressent, peut-être en utilisant un tableau de mappage de clés qui contiendra toutes les clés de cas d'utilisation valides que vous adressez ...
AZ majuscule ou 'Ä', 'Ö', 'Ü', aZ minuscule ou 0-9 ou 'ä', 'ö', 'ü'
Les clés ci-dessus ne sont que des exemples de représentation.
la source
Dans jQuery,
Évitez l'erreur, comme la touche de retour arrière, qui
s.toLowerCase() !== s
est nécessaire.la source
Vous pouvez utiliser un
KeyboardEvent
pour détecter de nombreuses touches, y compris le verrouillage des majuscules sur les navigateurs les plus récents.La
getModifierState
fonction fournira l'état pour:Cette démo fonctionne dans tous les principaux navigateurs, y compris les mobiles ( caniuse ).
la source
Vous pouvez détecter le verrouillage des majuscules en utilisant "est une lettre majuscule et aucun décalage appuyé" en utilisant une capture de touche sur le document. Mais alors vous feriez mieux de vous assurer qu'aucun autre gestionnaire de pression de touche ne fait apparaître la bulle d'événement avant qu'elle ne parvienne au gestionnaire du document.
Vous pouvez saisir l'événement pendant la phase de capture dans les navigateurs qui prennent en charge cela, mais cela semble quelque peu inutile car il ne fonctionnera pas sur tous les navigateurs.
Je ne vois pas d'autre moyen de détecter réellement le statut de verrouillage des majuscules. La vérification est de toute façon simple et si des caractères non détectables ont été tapés, eh bien ... alors la détection n'était pas nécessaire.
Il y avait un article sur 24 façons l'année dernière. Assez bien, mais manque de support de caractère international (utilisez
toUpperCase()
pour contourner cela).la source
De nombreuses réponses existantes vérifieront le verrouillage des majuscules lorsque la touche Maj n'est pas enfoncée mais ne le vérifieront pas si vous appuyez sur la touche Maj et obtenez des minuscules, ou vérifiera cela mais ne vérifiera pas non plus que le verrouillage des majuscules est désactivé, ou vérifiera cela mais considérera les clés non alpha comme «désactivées». Voici une solution jQuery adaptée qui affichera un avertissement si une touche alpha est pressée avec des majuscules (Maj ou pas de décalage), désactivera l'avertissement si une touche alpha est pressée sans majuscules, mais ne désactivera ou n'activera pas l'avertissement lorsque les chiffres ou autres touches sont enfoncés.
la source
Dans JQuery. Cela couvre la gestion des événements dans Firefox et vérifiera les caractères majuscules et minuscules inattendus. Cela présuppose un
<input id="password" type="password" name="whatever"/>
élément et un élément séparé avec id 'capsLockWarning
' qui a l'avertissement que nous voulons afficher (mais qui est masqué sinon).la source
keypress
événement pour utiliser différentes enveloppes en entrée, car les deuxkeydown
etkeyup
retourneront toujours en majuscules . Par conséquent, cela ne déclenchera pas la touche de verrouillage ... si vous avez l'intention de combiner avece.originalEvent.getModifierState('CapsLock')
Les meilleures réponses ici n'ont pas fonctionné pour moi pour deux raisons (code non commenté avec un lien mort et une solution incomplète). J'ai donc passé quelques heures à essayer tout le monde et à tirer le meilleur parti possible: voici le mien, y compris jQuery et non-jQuery.
jQuery
Notez que jQuery normalise l'objet d'événement de sorte que certaines vérifications sont manquantes. Je l'ai également réduit à tous les champs de mot de passe (car c'est la principale raison d'en avoir besoin) et ajouté un message d'avertissement. Cela a été testé dans Chrome, Mozilla, Opera et IE6-8. Stable et attrape tous les états de verrouillage, SAUF lorsque les chiffres ou les espaces sont enfoncés.
Sans jQuery
Certaines des autres solutions sans jQuery manquaient de solutions de repli IE. @Zappa l'a corrigé.
Remarque: Découvrez les solutions de @Borgar, @Joe Liversedge et @Zappa, et le plugin développé par @Pavel Azanov, que je n'ai pas essayé mais c'est une bonne idée. Si quelqu'un connaît un moyen d'étendre la portée au-delà de A-Za-z, veuillez le modifier. De plus, les versions jQuery de cette question sont fermées en double, c'est pourquoi je poste les deux ici.
la source
Nous utilisons
getModifierState
pour vérifier le verrouillage des majuscules, il s'agit uniquement d'un membre d'un événement de souris ou de clavier, nous ne pouvons donc pas utiliser deonfocus
. Les deux moyens les plus courants pour que le champ de mot de passe soit mis en évidence sont un clic ou un onglet. Nous utilisonsonclick
pour vérifier un clic de souris dans l'entrée, et nous utilisonsonkeyup
pour détecter un onglet du champ de saisie précédent. Si le champ de mot de passe est le seul champ de la page et est auto-focalisé, l'événement ne se produira pas jusqu'à ce que la première clé soit relâchée, ce qui est correct mais pas idéal, vous voulez vraiment que les astuces de l'outil de verrouillage des majuscules s'affichent une fois le champ de mot de passe gagné concentrer, mais dans la plupart des cas, cette solution fonctionne comme un charme.HTML
JS
https://codepen.io/anon/pen/KxJwjq
la source
event.getModifierState("CapsLock").
Je sais que c'est un vieux sujet, mais j'ai pensé que j'allais réagir au cas où cela aiderait les autres. Aucune des réponses à la question ne semble fonctionner dans IE8. J'ai cependant trouvé ce code qui fonctionne dans IE8. (Havent n'a encore rien testé sous IE8). Cela peut être facilement modifié pour jQuery si nécessaire.
Et la fonction est appelée via l'événement onkeypress comme ceci:
la source
Il s'agit d'une solution qui, en plus de vérifier l'état lors de l'écriture, bascule également le message d'avertissement chaque fois que la Caps Locktouche est enfoncée (avec certaines limitations).
Il prend également en charge les lettres non anglaises en dehors de la plage AZ, car il vérifie le caractère de chaîne par rapport
toUpperCase()
ettoLowerCase()
au lieu de vérifier par rapport à la plage de caractères.Notez que l'observation du basculement du verrouillage des majuscules n'est utile que si nous connaissons l'état du verrouillage des majuscules avant d' Caps Lockappuyer sur la touche. L'état de verrouillage des majuscules actuel est conservé avec un
caps
propriété JavaScript sur l'élément de mot de passe. Ceci est défini la première fois que nous avons une validation de l'état de verrouillage des majuscules lorsque l'utilisateur appuie sur une lettre qui peut être en majuscule ou en minuscule. Si la fenêtre perd le focus, nous ne pouvons plus observer le basculement du verrouillage des majuscules, nous devons donc revenir à un état inconnu.la source
Récemment, il y avait une question similaire sur hashcode.com, et j'ai créé un plugin jQuery pour y faire face. Il prend également en charge la reconnaissance du verrouillage des majuscules sur les numéros. (Sur le clavier allemand standard, le verrouillage des majuscules a un effet sur les nombres).
Vous pouvez vérifier la dernière version ici: jquery.capsChecker
la source
Pour jQuery avec twitter bootstrap
Vérifiez les majuscules verrouillées pour les caractères suivants:
AZ majuscule ou 'Ä', 'Ö', 'Ü', '!', '"', '§', '$', '%', '&', '/', '(', ')' , '=', ':', ';', '*', '' '
aZ ou 0-9 en minuscules ou 'ä', 'ö', 'ü', '.', ',', '+', '#'
démo en direct sur jsfiddle
la source
Une variable qui montre l'état de verrouillage des majuscules:
fonctionne sur tous les navigateurs => canIUse
la source
Cette réponse basée sur jQuery publiée par @ user110902 m'a été utile. Cependant, je l'ai un peu amélioré pour éviter une faille mentionnée dans le commentaire de @B_N: il n'a pas réussi à détecter CapsLock lorsque vous appuyez sur Shift:
Comme cela, cela fonctionnera même en appuyant sur Maj.
la source
Ce code détecte le verrouillage des majuscules quel que soit le cas ou si la touche Maj est enfoncée:
la source
J'ai écrit une bibliothèque appelée capsLock qui fait exactement ce que vous voulez qu'elle fasse.
Il suffit de l'inclure sur vos pages Web:
Ensuite, utilisez-le comme suit:
Voir la démo: http://jsfiddle.net/3EXMd/
Le statut est mis à jour lorsque vous appuyez sur la touche de verrouillage des majuscules. Il utilise uniquement le hack de touche Maj pour déterminer l'état correct de la touche de verrouillage des majuscules. Initialement, le statut est
false
. Alors méfiez-vous.la source
Encore une autre version, claire et simple, gère les capsLock décalés, et non contraint à l'ascii je pense:
Edit: le sens de capsLockOn a été inversé, doh, corrigé.
Edit # 2: Après avoir vérifié cela un peu plus, j'ai apporté quelques modifications, un code un peu plus détaillé malheureusement, mais il gère plus d'actions de manière appropriée.
L'utilisation de e.charCode au lieu de e.keyCode et la vérification des valeurs 0 sautent un grand nombre de pressions de touches sans caractère, sans coder quoi que ce soit de spécifique à une langue ou à un jeu de caractères donné. D'après ma compréhension, il est légèrement moins compatible, donc les navigateurs plus anciens, non traditionnels ou mobiles peuvent ne pas se comporter comme le prévoit ce code, mais cela en vaut la peine, pour ma situation de toute façon.
La vérification par rapport à une liste de codes de ponctuation connus les empêche d'être considérés comme de faux négatifs, car ils ne sont pas affectés par le verrouillage des majuscules. Sans cela, l'indicateur de verrouillage des majuscules est masqué lorsque vous tapez l'un de ces caractères de ponctuation. En spécifiant un ensemble exclu, plutôt qu'un inclus, il devrait être plus compatible avec les caractères étendus. C'est le bit le plus laid et le plus casé, et il y a une chance que les langues non occidentales aient suffisamment de codes de ponctuation et / ou de ponctuation différents pour être un problème, mais encore une fois ça vaut le coup IMO, au moins pour ma situation.
la source
Réagir
la source
Basé sur la réponse de @joshuahedlund car cela a bien fonctionné pour moi.
J'ai fait du code une fonction pour qu'il puisse être réutilisé et je l'ai lié au corps dans mon cas. Il ne peut être lié au champ de mot de passe que si vous préférez.
la source
La réponse de Mottie et Diego Vieira ci-dessus est ce que nous avons fini par utiliser et devrait être la réponse acceptée maintenant. Cependant, avant de le remarquer, j'ai écrit cette petite fonction javascript qui ne s'appuie pas sur les codes de caractères ...
Ensuite, appelez-le dans un gestionnaire d'événements comme ça
capsLockIsOnKeyDown.capsLockIsOnKeyDown(event)
Mais encore une fois, nous avons fini par utiliser la réponse de @Mottie et @Diego Vieira
la source
Dans ce code ci-dessous, il sera affiché une alerte lorsque les majuscules se verrouillent et qu'ils appuient sur la touche en utilisant Maj
si nous retournons faux; alors le caractère actuel ne s'ajoutera pas à la page de texte.
la source
essayez ce code simple et facile à comprendre
Ceci est le script
Et le Html
la source
essayez d'utiliser ce code.
Bonne chance :)
la source
Vous pouvez utiliser ce script . Cela devrait bien fonctionner sous Windows même si vous appuyez sur la touche Maj mais cela ne fonctionnera pas sous Mac OS.
la source
Voici un plugin jquery personnalisé, utilisant jquery ui, composé de toutes les bonnes idées sur cette page et exploite le widget info-bulle. Le message de verrouillage des majuscules s'applique automatiquement à toutes les zones de mot de passe et ne nécessite aucune modification de votre code HTML actuel.
Code de plug-in personnalisé ...
Appliquer à tous les éléments de mot de passe ...
la source
Code Javascript
Nous devons maintenant associer ce script à l'aide de Html
la source
il est tard, je sais, mais cela peut être utile à quelqu'un d'autre.
voici donc ma solution la plus simple (avec des caractères turcs);
la source
J'ai donc trouvé cette page et je n'ai pas vraiment aimé les solutions que j'ai trouvées, alors j'en ai trouvé une et je la propose à vous tous. Pour moi, cela n'a d'importance que si le verrouillage des majuscules est activé si je tape des lettres. Ce code a résolu le problème pour moi. C'est rapide et facile et vous donne une variable capsIsOn à référencer chaque fois que vous en avez besoin.
la source
Lorsque vous tapez, si caplock est activé, il pourrait convertir automatiquement le caractère actuel en minuscules. De cette façon, même si caplocks est activé, il ne se comportera pas comme sur la page actuelle. Pour informer vos utilisateurs, vous pouvez afficher un texte indiquant que caplocks est activé, mais que les entrées du formulaire sont converties.
la source
Il existe une solution beaucoup plus simple pour détecter le verrouillage des majuscules:
la source