Javascript autoriser que certain caractere

Eléphant du PHP | 440 Messages

21 oct. 2009, 20:47

Bonjour à tous,


j'ai un champ textarea et je voudrait autoriser uniquement que les 1234567890 et les "-"

Code : Tout sélectionner

function IntegerOnly (evt) { evt = (evt) ? evt : ((event) ? event : null); var code = evt.keyCode; // Si la touche pressée n'appartient pas aux chiffres 1 à 9 // et que ce n'est ni la touche backspace, ni la touche TAB, ni l'une des flèches gauche/droite, ni la touche DEL, // alors: annule la frappe. if ((code < 48 || code > 57) && (code != 38)) { evt.returnValue = false; // méthode pour MSIE, marche aussi avec Safari, ignorée par Firefox (aucun problème) evt.preventDefault(); // méthode pour Firefox (marche aussi avec Safari) // Manque une méthode pour Netscape (7.0) et Opera (7.0) } }
j'ai trouver ceci comme code, mais le problème par exemple je suis sur un portable la touche 1 à comme affectation aussi "&".

Avec le code ci-dessus, si j'essai azertyu.etc... ça semble marcher, mais par contre si j'appuie sur le 1 sans être en majuscule (donc &) le & s'affiche dans le champ.

Comment résoudre ce problème ?

Merci

guigui69

Mammouth du PHP | 2937 Messages

21 oct. 2009, 22:13

Une piste : utiliser une expression rationnelle.

Code : Tout sélectionner

var regexp = /[-0-9]+/;
Il suffit ensuite de tester le contenu de textarea, grâce à la méthode test ().

Code : Tout sélectionner

var textarea = 'lorem ipsum dolor sit amet'; var test = (regexp.test (textarea))? true: false; // Vaut false

Eléphant du PHP | 440 Messages

21 oct. 2009, 22:34

d'accord,

donc avec ca il regarder chaque caractère que je tape (onkeydown) si il fait partie de la liste il ne l'inscrit pas.

c'est bien ca?

guigui69

Eléphant du PHP | 440 Messages

22 oct. 2009, 09:46

j'avance,

J'ai trouver ce code:

Code : Tout sélectionner

function ejs_code_clavier(keyStroke) { ejs_code_eventChooser = (!document.all) ? keyStroke.which : event.keyCode; ejs_code_which = String.fromCharCode(ejs_code_eventChooser).toLowerCase(); alert('Vous avez appuyé sur la touche '+ejs_code_which); var regexp = /[-0-9]+/; var test = (regexp.test (ejs_code_which))? true: false; // Vaut false } document.onkeypress = ejs_code_clavier;
Le problème il me détecte 2 touches. exemple quand j'appuie sur le 1 il me met en alert le "1" puis le second alert le "&".
Quel erreur est-je commis?

Merci guigui69

Mammouth du PHP | 2937 Messages

22 oct. 2009, 10:18

Le mieux est de vérifier le contenu de l'élément textarea au moment de la validation du formulaire, plutôt qu'au fil de la saisie.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 oct. 2009, 12:00

Le mieux est de vérifier le contenu de l'élément textarea au moment de la validation du formulaire, plutôt qu'au fil de la saisie.
Dans l'idée, je suis d'accord avec Victor, à savoir qu'une vérification Javascript se contourne facilement (même quelques fois sans intention de le faire, si le javascript est désactivé, pour des raisons X ou Y), et que si elle apporte un confort appréciable (l'utilisateur est informé en temps réel de ce qui ne va pas), il n'en reste pas moins qu'une validation PHP est obligatoire pour la sécurité de ton applicatif
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 440 Messages

22 oct. 2009, 14:10

Merci pour votre réponse,

comment je pourrait mettre ca en place car le but c'est que dans les 2 champs (client et produit)je n'ai que des numéros.

guigui69