Vous pouvez l'essayer. Nous avons ajouté un exemple fonctionnel. Lorsque le focus est sur l'entrée, le fait d'activer le verrouillage des majuscules fait que la led passe du rouge au vert. (Je n'ai pas testé sur mac/linux)
NOTE : Les deux versions fonctionnent pour moi. Merci pour les contributions constructives dans les commentaires.
ANCIENNE VERSION : https://jsbin.com/mahenes/edit?js,output
Voici aussi une version modifiée (quelqu'un peut-il tester sur mac et confirmer)
NOUVELLE VERSION : https://jsbin.com/xiconuv/edit?js,output
NOUVELLE VERSION :
function isCapslock(e) {
const IS_MAC = /Mac/.test(navigator.platform);
const charCode = e.charCode;
const shiftKey = e.shiftKey;
if (charCode >= 97 && charCode <= 122) {
capsLock = shiftKey;
} else if (charCode >= 65 && charCode <= 90
&& !(shiftKey && IS_MAC)) {
capsLock = !shiftKey;
}
return capsLock;
}
ANCIENNE VERSION :
function isCapslock(e) {
e = (e) ? e : window.event;
var charCode = false;
if (e.which) {
charCode = e.which;
} else if (e.keyCode) {
charCode = e.keyCode;
}
var shifton = false;
if (e.shiftKey) {
shifton = e.shiftKey;
} else if (e.modifiers) {
shifton = !!(e.modifiers & 4);
}
if (charCode >= 97 && charCode <= 122 && shifton) {
return true;
}
if (charCode >= 65 && charCode <= 90 && !shifton) {
return true;
}
return false;
}
Pour les caractères internationaux, une vérification supplémentaire peut être ajoutée pour les touches suivantes, selon les besoins. Vous devez obtenir la gamme de codes de clé pour les caractères qui vous intéressent, peut-être en utilisant un tableau de mappage de clé qui contiendra toutes les clés de cas d'utilisation valides que vous adressez...
majuscules de A à Z ou "Ä", "Ö", "Ü", minuscules a-Z ou 0-9 ou "ä", "ö", "ü".
Les clés ci-dessus ne sont que des exemples de représentation.
1 votes
Juste par curiosité, pourquoi voulez-vous détecter le verrouillage des majuscules dans une application web ?
221 votes
PARCE QUE BEAUCOUP TROP DE MES UTILISATEURS REMPLISSENT LEURS FORMULAIRES COMME ÇA.
7 votes
@nicf : Si c'est la raison, pourquoi ne pas lancer un regexp sur l'entrée et leur demander d'arrêter de crier s'il y a trop de lettres majuscules ?
169 votes
Il y a une bien meilleure raison de faire ça. Si un utilisateur est en train de saisir un mot de passe, il serait très utile de l'avertir si le verrouillage de son clavier est activé.
1 votes
J'ai renoncé à essayer de faire en sorte que les utilisateurs saisissent des données en minuscules, et j'affiche toujours le texte en utilisant la casse du titre, les minuscules ou la casse de la phrase, selon le cas. Notez que les codes de pays (
US
), les codes postaux (M5W 1E6
), et les numéros de téléphone (KL5-0912
) doivent s'afficher en majuscules même s'ils ont été saisis en minuscules. Modifier "Composez juste le diamant,D
-I
-A
-M
-O
-N
-D
."27 votes
Il semble que les navigateurs devraient mettre en place un avertissement "le verrouillage des majuscules est activé" lorsque les utilisateurs tapent dans
input type=password
(similaire à la validation de l'adresse électronique pour lesinput type=email
en chrome, etc.)8 votes
Excellente question, mais la réponse acceptée est 8 ans. La meilleure réponse est aquí
0 votes
@Mac Plus bas, Ryan Marin a posté une méthode mise à jour (en septembre 2018) qui a très bien fonctionné pour moi. Voir sa réponse ici . A la vôtre !
1 votes
Ouaip, les deux vérifient pour
event.getModifierState( 'CapsLock' )
. Génial !0 votes
Merci pour vos commentaires, parce que je pensais... Pourquoi la réponse acceptée est la chose que le questionneur ne voulait pas faire ?