Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1420 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] N'accepter que certain champs dans un textbox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] N'accepter que certain champs dans un textbox

n°449855
burgergold
5$? va chez l'diable!
Posté le 06-07-2003 à 23:02:28  profilanswer
 

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
mood
Publicité
Posté le 06-07-2003 à 23:02:28  profilanswer
 

n°450043
burgergold
5$? va chez l'diable!
Posté le 07-07-2003 à 11:50:02  profilanswer
 
n°450045
dropsy
et bonne chance surtout...
Posté le 07-07-2003 à 11:57:30  profilanswer
 

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 [:proy]

n°450050
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-07-2003 à 12:04:35  profilanswer
 

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 :
  1. ...
  2. switch (event.keyCode)
  3.   case "les touches que tu veux pas":
  4.             window.event.keyCode = 0;
  5.             event.returnValue=false;
  6.             break;
  7. ...


Et il faut que tu appeles ta fonction dans un onKeyDown

n°450093
dropsy
et bonne chance surtout...
Posté le 07-07-2003 à 12:50:15  profilanswer
 

plutot que le onChange, regardes les événements onKeyUp, onKeyDown et onKeyPress

n°450660
burgergold
5$? va chez l'diable!
Posté le 07-07-2003 à 23:25:52  profilanswer
 

dropsy a écrit :

plutot que le onChange, regardes les événements onKeyUp, onKeyDown et onKeyPress


 
donc jpourrais prendre ce code avec un keypress?
 

Code :
  1. switch (event.keyCode)
  2.     case "les touches que tu veux pas":
  3.               window.event.keyCode = 0;
  4.               event.returnValue=false;
  5.               break;


---------------
http://www.boincstats.com/signature/user_664861.gif
n°450686
burgergold
5$? va chez l'diable!
Posté le 08-07-2003 à 01:39:08  profilanswer
 

Anapajari a écrit :

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 :
  1. ...
  2. switch (event.keyCode)
  3.   case "les touches que tu veux pas":
  4.             window.event.keyCode = 0;
  5.             event.returnValue=false;
  6.             break;
  7. ...


Et il faut que tu appeles ta fonction dans un onKeyDown


 
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


---------------
http://www.boincstats.com/signature/user_664861.gif
n°450746
anapajari
s/travail/glanding on hfr/gs;
Posté le 08-07-2003 à 09:30:11  profilanswer
 

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!

n°451712
burgergold
5$? va chez l'diable!
Posté le 09-07-2003 à 00:42:05  profilanswer
 

Code :
  1. function KeyCheck(login)
  2. {
  3.    if (window.event)
  4.    {
  5.       key = window.event.keyCode;
  6.    }
  7.    else
  8.    {
  9.       key = login.which;
  10.    }
  11.    if (key < 45)
  12.    {
  13.       key = 0;
  14.    }
  15.    else if (key < 48 && key > 45)
  16.    {
  17.       key = 0;
  18.    }
  19.    else if (key < 65 && key > 57)
  20.    {
  21.       key = 0;
  22.    }
  23.    else if (key < 95 && key > 90)
  24.    {
  25.       key = 0;
  26.    }
  27.    else if (key < 97 && key > 95)
  28.    {
  29.       key = 0;
  30.    }
  31.    else if (key > 122)
  32.    {
  33.       key = 0;
  34.    }
  35.    if (window.event)
  36.    {
  37.       window.event.keyCode = key;
  38.    }
  39.    else
  40.    {
  41.       ????????????
  42.    }
  43. }


 
maintenant faut que jtrouve pour mozilla  :cry:  
 
jcapable d'avoir le charactere, mais là faut que jlui retourne 0 où les ?????????? et ca jréussi pas


Message édité par burgergold le 09-07-2003 à 01:07:35

---------------
http://www.boincstats.com/signature/user_664861.gif
n°451835
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-07-2003 à 09:41:35  profilanswer
 

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 :
  1. function array_key_exists( tableau, cle)
  2.    {
  3.        for (i=0; i<tableau.length; i++)
  4.        {
  5.            if ( tableau[i] == cle )
  6.            {
  7.               return 1;
  8.            }
  9.        }
  10.        return 0;
  11.    }


Ainsi ton gros bout de code devient:

Code :
  1. function KeyCheck(login)
  2. {
  3.   if (window.event)
  4.   {
  5.      key = window.event.keyCode;
  6.   }
  7.   else
  8.   {
  9.      key = login.which;
  10.   }
  11.  
  12.   if ( ! array_key_exists( Chartokeep, key) )
  13.   {
  14.      key = 0;
  15.   }
  16.   ...


Déjà c'est beaucoup plus clair non?
Ensuite j'ai rien compris à ton deuxieme probleme.


Message édité par anapajari le 09-07-2003 à 09:42:13
mood
Publicité
Posté le 09-07-2003 à 09:41:35  profilanswer
 

n°451998
burgergold
5$? va chez l'diable!
Posté le 09-07-2003 à 12:15:08  profilanswer
 

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;


---------------
http://www.boincstats.com/signature/user_664861.gif
n°452028
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-07-2003 à 12:45:41  profilanswer
 

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


Message édité par anapajari le 09-07-2003 à 12:46:02
n°452070
burgergold
5$? va chez l'diable!
Posté le 09-07-2003 à 13:28:49  profilanswer
 

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

n°452134
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-07-2003 à 14:27:48  profilanswer
 

[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?


Message édité par anapajari le 09-07-2003 à 14:29:42

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] N'accepter que certain champs dans un textbox

 

Sujets relatifs
[PHP] Validation d'un champs dateapplets, champs de saisie, etc
[ VBA ] creer 1 table en affectant une liste de choix pr ses champs[asp]Probleme d'update d'1 champs d'1 ligne dans une table!
Forcer la saisie d'une date au format jj/mm/aaaa dans une textbox[VBA + Access] Récupérer tous les champs de mes tables Access...
[HTML/JS] probleme avec frame chez certain hebergeurchamps de base de données
[Mysql] Quel type pour ce champs de base de donnée ?[java] Methode et champs static
Plus de sujets relatifs à : [JS] N'accepter que certain champs dans un textbox


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR