6
votes

Rejeter "Control" clés sur l'événement de la clé

Quel est le mode propre de javascript ou jQuery pour filtrer les touches de contrôle . Par clés de contrôle , je veux dire n'importe quelle touche qui n'est pas A-Z, 0-9 ou des caractères spéciaux (c'est-à-dire!, @, #, Etc.). Je veux simplement filtrer les clés telles que "Shift", "Alt", F1- F9, Caps Lock, etc.

Je suis sûr que je pouvais vérifier chaque code ASCII individuel de l'argument de l'événement ... mais je me demande s'il y a une solution "plus propre".

Remarque: Je développe une application spécifiquement pour IE 8


0 commentaires

4 Réponses :


3
votes

Utilisez événement.Qui - chaque clé a son propre code. La touche de contrôle est 17, la touche Maj est 16, et @ est deux touches différentes, 16 suivies de 50. Utilisez la démonstration sur cette page pour savoir quelles valeurs sont renvoyées pour chaque touche que vous souhaitez accepter ou ignorer.


0 commentaires

1
votes

Cela permettra uniquement A-Z (codes 65 - 90), 0-9 (48 à 57). Notez que Shift code> doit être autorisé, car il est nécessaire de transformer un texte sur une majuscule.

$("...").keydown(function(ev){
    var k = ev.which;
    if(!(k >= 65 && k <= 90) /* a-z */
    || !(k >= 48 && k <= 57) /* numbers */
    || !(k >= 96 && k <= 111) /* numeric keyboard*/
    || k != 59 || k != 61 || k != 188 || k != 190 || k != 191 || k != 191
    || k != 192 || !(k >= 219 && k <= 222) || k != 32 /* Comma's,  etc. */
    || ev.ctrlKey || ev.altKey/* || ev.shiftKey*/){
        //Filter
    }
})


1 commentaires

Comment cela traite-t-il des caractères Unicode comme des maumatismes allemands? Capitales?



7
votes

Je suis allé avec quelque chose comme ceci: xxx


2 commentaires

Oui. La force brute semble être nécessaire :(


BTW qu'est-ce que "clé de pointe de clic droit"?



2
votes

Un vieux sujet, mais en 2021 événement.Quelle code> est obsolète et event.keycode code> aussi. Cependant, pour obtenir des clés valides pour l'entrée de l'utilisateur, vous pouvez utiliser une seule condition simple.

if (event.key.length === 1) {
  // do stuff
}


0 commentaires