JavaScript mot de Code 46 est DEL de la touche de Fonction ou (.) signe de période?
Im écrit un peu de logique en JavaScript à l'aide de jquery, où je dois vérifier l'entrée de contenu à l'encontre d'une expression régulière pattern ex:
"^[a-zA-Z0-9_]*$" //Alpha-numeric and _
La logique est presque terminé, j'ai juste un petit problème de filtrage de la touche de fonction DEL,
ma logique, qui va comme ceci:
var FunctionsKey = new Array(8, 9, 13, 16, 35, 36, 37, 39, 46);
function keypressValidation(key) {
if (config.regexExp != null) {
if ($.inArray(key, FunctionsKey) != -1) {
return true;
}
else {
var keyChar = String.fromCharCode(key);
return RegexCheck(keyChar);
}
}
return true;
}
Si le mot de Code est l'une de celles dans le tableau, je la laisse passer, si je pas obtenir le char et le comparer à l'expression régulière.
Le problème, c'est: dans certains Navigateurs, le DEL et '.' (signe) ont le même Code de clé de 46.
Donc, il y a une meilleure logique de filtrer les touches de fonction ou dois-je écrire une condition pour ce cas, peut-être la suppression de 46 à partir du tableau et essayer de le convertir en char et si c'est (.) le laisser aller à la fonction Regex si pas le laisser passer?
L'autre question sera il y a plus de Clé partagée Codes dans certains navigateurs?
EDIT: Ma solution suggérée ne fonctionnent pas parce qu'il n'a pas d'importance qui touche l'utilisateur pressé (DEL ou la période) je reçois toujours des (.) en tant que CHAR au moins sur OPERA et FF =(.
OriginalL'auteur JOBG | 2010-05-18
Vous devez vous connecter pour publier un commentaire.
110 est le décimal code de la clé, 46 est la touche SUPPR.
Pour s'amuser: placez ce dans pour voir ce que vous frappez! EDIT: ajout d'un concentré d'événements
OU
remarque: Il existe deux '.' touches sur de nombreux claviers, essayez les deux, (190 semble que cela pourrait être une décimale si je me souviens bien de la mort des cellules du cerveau 🙂 Vous pouvez ajouter un alert(); pour savoir exactement
ok, la première que je remarque, c'est la que vous utilisez keydown au lieu de la pression de touche, et il semble qu'il y a une diff dans quels cas choisir, actuellement, im à l'aide de touches et le résultat avec la méthode sont (.) = 0(FF) - 46(Rpt), DEL = 46 dans l'autre main keydown donne (.) = 190, DEL = 46 pour les deux navigateurs, pourquoi ces différences?
eh bien merci pour la réponse, j'ai trouver une page qui clarifie le problème, avec votre réponse, et que je peux résoudre le problème =). blog.pothoven.net/2008/05/...
Bienvenue, oui il y a une différence, je trouve le keydown un peu plus fiable pour mes fins. Content que cela fonctionne pour vous de toute façon 🙂
OriginalL'auteur Mark Schultheiss
Virgule ou un point-clé de code sur le clavier est de 190.. virgule sur le pavé numérique est de 110.
acclamations..!!
-
(189) et-
(109)OriginalL'auteur Bhaumik
@Mark Schultheiss' réponse est vraiment bon, je vais ajouter un peu plus à cela: lorsque vous avez besoin de pousser le DEL bouton sur le clavier à l'extérieur de l'élément d'entrée (c'est lorsqu'un champ de texte perd le focus), vous devez intercepter.
Cela peut être fait comme suit:
OriginalL'auteur vcoppolecchia
La différence est là:
Sur pression de touche "SUPPRIMER" et "" renvoie le code de 46.
Afin d'écrire le code sur keyup ou enfoncée, puis "SUPPRIMER" fonctionne bien.
Pour vérifier http://javascript.info/tutorial/keyboard-events
Mauvais code
Droit code:
Code Final
sa fonctionne bien pour moi.
OriginalL'auteur muTheTechie