J'ai besoin de configurer un Il y a beaucoup de choses d'un exemple autour de là, j'ai commencé avec quelque chose de similaire à celui-ci: p> tout ce qui a fonctionné parfaitement jusqu'à ce que je touche la touche "#". Dans mon clavier canadien français, le "#" a sa propre clé (aucun changement impliqué) qui renvoie le code KeyCode 51, identique au nombre "3". P> Je pense que dans le clavier américain, le "# "est obtenu en appuyant sur Maj + 3, qui peut être la raison pour laquelle ils ont le même code-clés. P> Maintenant, je me rends compte que je dois aussi gérer les clés de quart et alt, mais c'est une autre histoire. P> Cela fonctionne différemment avec l'événement JQuery KeyPress, qui offre la propriété Charcode, mais je ne l'ai pas utilisée au début à cause de ce que documentation dit: p> Comme l'événement KeyPress n'est couvert par aucune spécification officielle, le
comportement réel rencontré lors de l'utilisation de celui-ci peut différer à travers les navigateurs,
versions de navigateur et plates-formes. P>
BlockQuote> En outre, j'aurais besoin d'une solution de contournement dans ce cas pour gérer les onglets, les flèches et d'autres clés spéciales car ils ne fournissent pas de charcode. P> La question est la suivante:
comme une quête secondaire: quels navigateurs peuvent être problématiques avec l'événement KeyPress? Je veux dire, actuellement, je ne me soucie pas vraiment si mon site Web ne prend pas en charge IE6. Je cible des navigateurs récents. P> Comme une personne pointée dans les commentaires, cette méthode ne permet pas à l'utilisateur de "Ctrl + V" un numéro dans l'entrée. Dans mon cas particulier, ce n'est vraiment pas une obligation de pouvoir coller un nombre. Mais cela a sauté quelque chose dans ma tête, l'utilisateur peut toujours cliquer à droite> Copier du texte dans l'entrée et dans ce cas qui pourrait être n'importe quoi. Plus j'y pense, plus il me semble que j'aurai besoin de l'événement code> code> pour gérer les onglets et les flèches, et un autre événement em> pour gérer l'entrée elle-même. < / P> Beaucoup de belles réponses ici, mais le prix va à mrtShatherman A > Pour l'utilisation de
Modifier H2>
EDIT2 H2>
entrée code> et
PropertyChanger code> événements. J'utiliserai une combinaison de cette réponse pour la validation numérique, plus l'événement code> codcode code> comme avant pour l'utilisation spéciale des flèches, des onglets et des touches entrées. P> P>
4 Réponses :
jQuery fournit également un edit strong> Je relisez votre question et modifié le code ci-dessus pour shiftkey code> booléen sur l'objet d'événement:
! SQUATEKEY CODE> P> P>
Comme je l'ai dit dans la question, il n'y a pas de clé de changement de vitesse impliqué lorsque je tape "#". Ce caractère a sa propre clé sur mon clavier et aucun modificateur n'est nécessaire.
@RGTHREE: Il semblerait donc que votre solution conserve Johnny5 dans la situation actuelle de ne pas pouvoir distinguer un "3" (pas de quart de travail) et un "#" (pas de décalage, même code que "3")
Je vois. Je ne suis pas tout à fait sûr de savoir pourquoi cela produirait le même code clé. Sur un clavier américain, la touche "*" autonome est un code clé différent de la touche Maj + 8 (évidemment), il me semblerait qu'une touche "#" distincte doit être un code clé différent de celui de Maj + 3. Si j'avais eu une aventure, il semblerait que quels que soient les pilotes assises entre votre clavier, le système d'exploitation et le navigateur correspondent à une touche «#» sur le 51 keycode ... (cependant, je ne suis pas d'expert international du clavier). Pourrait-il y avoir autre chose sur l'objet événement qui vous indique quelque chose de spécial à propos de cette clé?
Plus j'y pense, plus il semble que la clé + code KeyCode n'est pas la voie à suivre.
Que diriez-vous de quelque chose comme ça. Cela devrait couvrir la coupe / la pâte et la teneur en RMB. Nous surveillons la zone de texte pour tout changement de contenu. Ensuite, nous utilisons une regex pour filtrer les caractères basés sur un whitelist. Cela ne gérera pas la clé de caractère, mais je pense que cela va bien.
Le drapeau http://jsfiddle.net/uxeva/1 p> nous lier à deux événements ici. Entrée pour Firefox et PropertyChange pour d'autres navigateurs. P> P> \ d code> indique que seuls les chiffres doivent être acceptés. P>
J'ai peut-être manqué quelque chose, mais je peux entrer quelque chose dans le violon, avec Firefox 9.0.1.
@ Johnny5 - fonctionne bien en FF9 pour moi. Vous ne pouvez pas taper des caractères spéciaux comme @ # $%%.
@ Johnny5 - je vois. Pour une raison quelconque, j'ai lu votre réponse comme désirant accepter les lettres et les lettres. Mais vous ne voulez que des chiffres. J'ai changé l'expression régulière vers \ d code> pour que cela n'accepte que des chiffres.
@ Johnny5 - J'ai effectivement changé ma réponse pour emprunter une partie du code d'Adeneo parce que son chèque ISNAN empêche l'exécution inutile de l'expression régulière.
Pouvez-vous expliquer un peu plus loin quel est l'événement "Entrée de propriétéChanger"?
@ Johnny5 - Entrée est un événement pour Firefox qui se produit lorsque la valeur de la boîte de texte change. L'événement de PropertyChange est le même, mais pour d'autres navigateurs. Vous avez besoin de gérer tous les cas de navigateur.
Si les navigateurs plus anciens ne sont pas un problème, le type d'entrée de numéro doit couvrir ceci.
$("#number3").on('keyup', function() { var V = $(this).val(); if (isNaN(V)) { $(this).val(V.replace(/[^0-9]/g,'')); } });
Il semble être la solution, je vais tester ce soir. Merci.
+1 - Semblable à ma réponse, mais le chèque ISNAN est une meilleure mise en œuvre. Si vous regardez à ma réponse, j'utilise Entrée de propriétéChange code>. Cela attrapera tous les événements de la méthode d'entrée (typing, CTRL-V et RMB). Un très bon tour à connaître.
Pourquoi ne pas faire quelque chose comme ça? Il utilise une combinaison de La manière dont cela fonctionne est, dès que le texte change, il vérifiera si la valeur est un nombre. Sinon, il va couper l'entrée jusqu'à ce qu'il s'agisse d'un nombre. Donc, si vous entrez Ceci fonctionnera avec Démo en direct strong> p> Keyup () code> événement et
isnan () code>. Cela fonctionnera si les types d'utilisateurs avec le clavier ou les pâtes sont un numéro.
25s code> ou
25SSS code>, vous serez laissé avec
25 code>. P>
Ctrl + V code> Coller aussi. Cela ne fonctionnera pas avec une pâte de clic droit et pour cette raison, j'ai désactivé un clic droit sur la zone de texte. P>
Vous savez que vous pouvez vérifier pour NAN (données) et enregistrer tous ces problèmes, non?
En outre, que se passe-t-il lorsque l'utilisateur pauvre essaie de coller un numéro avec Ctrl + V?
@gdoron: Je suppose que vous voulez dire vérifier la valeur de la zone de texte dans l'événement Keyup? Je me suis souvenu d'avoir fait quelque chose de similaire il y a quelques années, ce qui a entraîné un texte clignotant dans l'entrée lorsqu'il est sans numérum. Je veux vraiment bloquer i> d'autres caractères à saisir.
@Cameron: bonne prise, mais dans le contexte de ma candidature, il n'y a vraiment aucune raison pour laquelle j'aurais voulu le faire.
S'il vous plaît vérifier e.keycode, e.charcode et E.Qui. Unixpapa.com/js/key.html
@Cameron, ne vous inquiétez pas du texte clignotant, il n'y a rien de mal si l'expérience utilisateur n'est pas la meilleure quand il fait quelque chose de mal ...
@Diode: E.CHARCODE est uniquement disponible avec l'événement KeyPress, que le DOC JQUERY recommande pas i> à utiliser. Quant à E.Qui, dans le test, j'ai fait qu'il revient la même chose que E.KeyCode.