N'accepter que certain champs dans un textbox [JS] - HTML/CSS - Programmation
Marsh Posté le 07-07-2003 à 11:50:02
ReplyMarsh Posté le 07-07-2003 à 11:57:30
tu peux tester le contenu du champs avec une regexp sur le onchange et supprimer le dernier caractère de la chaine.
mais bon, il y a pê plus simple
Marsh Posté le 07-07-2003 à 12:04:35
deux solutions:
- soit tu controles à la sortie de la zone la présence de caractères qui ne correspondent pas. A ce moment la tu utilises effectivement un onChange et une regex pour vérifier. Inconvénient il apparait quand même dans la zone jusqu'a ce que celle-ci ne soit plus active
- soit tu controles au moment où la touche est pressé que le caractère demandé est compatible avec tes souhaits. Inconvénient, le code pour le faire je l'ai jamais testé sur autre chose qu'IE mais ça donne quelque chose comme ça:
Code :
|
Et il faut que tu appeles ta fonction dans un onKeyDown
Marsh Posté le 07-07-2003 à 12:50:15
plutot que le onChange, regardes les événements onKeyUp, onKeyDown et onKeyPress
Marsh Posté le 07-07-2003 à 23:25:52
dropsy a écrit : plutot que le onChange, regardes les événements onKeyUp, onKeyDown et onKeyPress |
donc jpourrais prendre ce code avec un keypress?
Code :
|
Marsh Posté le 08-07-2003 à 01:39:08
Anapajari a écrit : deux solutions:
|
en tentant de l'appliquer, jme rends compte que c pas trop évident cette méthode parce que c'est les caractères que je veux pas, et ca yen a une multitude
Marsh Posté le 08-07-2003 à 09:30:11
tu stockes le code des caractères que tu veux et si c'est pas dedans tu mets le bout de js que je t'ai donné plus haut.
En plus les codes des lettres doit se suivrent dans ton cas donc c'est pas trop dur!
Marsh Posté le 09-07-2003 à 00:42:05
Code :
|
maintenant faut que jtrouve pour mozilla
jcapable d'avoir le charactere, mais là faut que jlui retourne 0 où les ?????????? et ca jréussi pas
Marsh Posté le 09-07-2003 à 09:41:35
raaaah c'est bien porc comme code...
ce que je te conseillerais perso c'est de mettre tout les codes dans un tableau ( appelons le ChartoKeep) comme ça si tu as besoin d'en rajouter/enlever c'est pas dur!
Et ensuite tu crées une petite fonction comme ça:
Code :
|
Ainsi ton gros bout de code devient:
Code :
|
Déjà c'est beaucoup plus clair non?
Ensuite j'ai rien compris à ton deuxieme probleme.
Marsh Posté le 09-07-2003 à 12:15:08
pk tourner "jusqu'à" 60 fois dans une boucle for pour valider 1 caractère lorsque 6 if suffisent...
en tout cas, la vrai question, c que sous netscape le caractère s'affiche tout de meme, je ne suis pas capable de lui retourner 0 lorsque le caractère est invalide. Je détecte bien qu'il est invalide, je mets bien la variable "key" à 0, mais faut que je la retourne et ca fonctionne pas avec:
return false;
return 0;
login = 0;
login.which = 0;
Marsh Posté le 09-07-2003 à 12:45:41
burgergold a écrit : pk tourner "jusqu'à" 60 fois dans une boucle for pour valider 1 caractère lorsque 6 if suffisent... |
Bin parce que le code est vachement plus clair à mon sens, et que c'est pas 60 itérations qui vont ralentir l'ordi moyen d'un internaut.
sinon pour ton probleme:
http://p2p.wrox.com/archive/javascript/2002-12/32.asp
Marsh Posté le 09-07-2003 à 13:28:49
personnelement le code est dans un .js et jvais jamais le voir, et aucune chance que l'on rajoute des caractères alors je préfère avoir 6 itérations que d'en avoir jusqua 60
Marsh Posté le 09-07-2003 à 14:27:48
[mode chipotage]
Le nombre moyen d'iteration n'est pas de 60 mais de 30.5 avec la méthode que je te donnais. Et on pourrais réduire encore ce nombre en classant le code des lettres selon la frequence d'apparition de ces mêmes lettres.
[/end mode chipotage]
Sinon as tu trouver ton bonheur dans le lien plus haut?
Marsh Posté le 06-07-2003 à 23:02:28
J'ai un textbox sur lequel je ne veux que les caractères suivant:
a-z, A-Z, 0-9, - et _
je me doute que c un event onchange, mais comment vérifier le caractère, et surtout, ne pas l'afficher dans le textbox s'il ne fait pas parti de ceux ci?
---------------
http://www.boincstats.com/signature/user_664861.gif