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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [RESOLU] extraire et afficher premier caractere de chaque chaine

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] extraire et afficher premier caractere de chaque chaine

n°1746725
akalaan
Posté le 15-06-2008 à 13:16:18  profilanswer
 

Bonjour à tous,
 
Je souhaite créer une fonction qui me contrôle la validité des données saisies dans une cellule de formulaire et qui par la suite m'extrait la première lettre de chaque chaine dans prénom pour pouvoir ensuite créer un login à partir de ces 2 cellules pour avoir "pnom" comme login ou "p1p2nom" dans le cas d'un nom composé.
Le principe est le suivant :
 
Voici un extrait du form

Code :
  1. ...
  2. <tr id='1'>
  3.                         <td class='tablename' rowspan='2'>
  4.                                 Nom complet (format <strong>prenom nom</strong> ) :
  5.                         </td>
  6.                         <th align='center'>prenom</th>
  7.                         <th align='center'>nom</th>
  8.                 </tr>
  9.                 <tr id='2'>
  10.                         <td><input type='text' id='prenom' name='prenom' value='' onblur='createLogin_Mail();'/></td>
  11.                         <td><input type='text' id='nom' name='nom' value='' onblur='createLogin_Mail();' /></td>
  12.                 </tr>
  13.                 <tr id='3'>
  14.                         <td class='tablename'>Login</td>
  15.                         <td colspan='2'><input type='text' name='login' value='' readonly/></td>
  16.                 </tr>
  17. ...


 
Voici le code JS

Code :
  1. function createLogin_Mail()
  2. {
  3.         if ((document.FormAjoutUserLDAP.prenom.value!=null)&&(document.FormAjoutUserLDAP.nom.value!=null))
  4.         {
  5.                 var chaine_prenom = (document.FormAjoutUserLDAP.prenom.value);
  6.                 var chaine_nom = (document.FormAjoutUserLDAP.nom.value);
  7.                 var regexp1 =  new RegExp("[ .-]+", "g" );
  8.                 var tableau = chaine_prenom.split(regexp1);
  9.                 for (var i=0; i<tableau.length; i++)
  10.                 {
  11.                         var regexp2 = new RegExp("[a-zA-Z]","g" );
  12.                         if (regexp2.test(tableau[i]))
  13.                         {
  14.                                 prenom = tableau[i].charAt(0);
  15.                                 var login = prenom+chaine_nom;
  16.                                 document.FormAjoutUserLDAP.login.value = login
  17.                                 document.FormAjoutUserLDAP.mail.value = login
  18.                         }
  19.                         else
  20.                         {
  21.                                 alert('donnée invalide');
  22.                         }
  23.                 }
  24.         }
  25.         else
  26.         {
  27.                 alert('champ vide');
  28.         }
  29. }


 
Le problème qui se pose est que je ne parvient à mettre dans la cellule login que la première lettre de la dernière chaine de la cellule prénom, en gros prenom=jean-paul nom=dupond, login=pdupont au lieu de jpdupont.
 
Lorsque je fais un document.write(prenom = tableau[i].charAt(0)); cela m'ouvre bien une page et m'affiche bien mon "jp" alors que lorsque je dit que prenom = tableau[i].charAt(0); cela ne me met que la première de la dernière chaine.
 
Auriez-vous une idée ou suggestion ?
 
Merci d'avance,
 
Cordialement.


Message édité par akalaan le 17-06-2008 à 17:58:24
mood
Publicité
Posté le 15-06-2008 à 13:16:18  profilanswer
 

n°1746801
mIRROR
Chevreuillobolchévik
Posté le 15-06-2008 à 20:29:10  profilanswer
 

tu t y prends mal
ton  login est créé au sein du for
donc si jamais tu tombes sur un prenom composé ton login sera recréé autant de fois que la boucle sera itérée
ce que tu dois faire:
dans ton for tu concatènes les caracteres de prenom(ici c est j et p)
et a la sortie du for tu crées ton login


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
n°1747741
akalaan
Posté le 17-06-2008 à 17:57:21  profilanswer
 

merci pour ta réponse
c'est bon j'ai trouvé grâce à de l'aide.
voici le code qui fonctionne (peut être pas optimal)

Code :
  1. function createLogin_Mail(id)//vérification du format du champ
  2. {
  3.         if (document.getElementById(id).value!='')//on vérifie si le champ est non vide
  4.         {
  5.                 var test = 0;
  6.                 switch(document.getElementById(id).name)//on selectionne le code à appliquer en fonction de l'id passer en argument
  7.                 {
  8.                         case 'prenom':
  9.                                 var chaine = document.getElementById(id).value;//assignation du contenue du champ à chaine
  10.                                 var regexp1 =  new RegExp("[ .-]+", "g" );//règle de vérification pour les mots contenant des espaces, tirets ou point.
  11.                                 var tableau = chaine.split(regexp1);//découpage en autant de tableau que de chaine créer par le split
  12.                                 var prenom = '';
  13.                                 for (var i=0; i<tableau.length; i++)
  14.                                 {
  15.                                         var regexp2 = new RegExp("[a-z]","g" );
  16.                                         if (!regexp2.test(tableau[i]))//On teste si le contenu du tableau[i] respecte la règle de format
  17.                                         {
  18.                                                 test = '1';
  19.                                                 break;
  20.                                         }
  21.                                 prenom += tableau[i].charAt(0);//On attribut le premier caractère du contenu de chaque tableau de [i] en les concaténant dans prenom
  22.                                 }
  23.                         document.FormAjoutUserLDAP.login.value = prenom;//on attibut la valeur final de prenom au champ login
  24.                         document.FormAjoutUserLDAP.mail.value = prenom;//on attibut la valeur final de prenom au champ mail
  25.                         break;
  26.                         case 'nom':
  27.                                 var chaine = document.getElementById(id).value;
  28.                                 var regexp1 =  new RegExp("[ .-]+", "g" );
  29. var tableau = chaine.split(regexp1);
  30.                                 var nom = '';
  31.                                 for (var i=0; i<tableau.length; i++)
  32.                                 {
  33.                                         var regexp2 = new RegExp("[a-z]","g" );
  34.                                         if (!regexp2.test(tableau[i]))
  35.                                         {
  36.                                                 test = '2';                                                                                                               break;
  37.                                         }
  38.                                 nom += tableau[i];
  39.                                 }
  40.                         document.FormAjoutUserLDAP.login.value += nom;
  41.                         document.FormAjoutUserLDAP.mail.value += nom;
  42.                         break;
  43.                         case 'sec_soc':
  44.                                 var chaine = document.getElementById(id).value;
  45.                                 var regexpSS =  new RegExp("[0-9]+", "g" );
  46.                                 if (!regexpSS.test(chaine))
  47.                                 {
  48.                                         test = '3';
  49.                                         break;
  50.                                 }
  51.                         break;
  52.                 }
  53.                 if(test!=0)//si la chaine ne respecte pas le format de regexp2
  54.                 {
  55.                         switch(test)
  56.                         {
  57.                                 case '1':
  58.                                 alert('Les caractères autres que alphanumérique ne sont pas autorisé ex:(12,àé,.,-,...) !');
  59.                                 break;
  60. case '2':
  61.                                 alert('accent, MAJUSCULE non autorisé !');
  62.                                 break;
  63.                                 case '3':
  64.                                 alert('caractère alphanumérique non autorisé !');
  65.                                 break;
  66.                         }
  67.                 }
  68.                 else
  69.                 {
  70.                         var a = a;
  71.                 }
  72.         }
  73.         else//si le champ est vide
  74.         {
  75.                 alert('champ vide');
  76.         }
  77. }


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

  [RESOLU] extraire et afficher premier caractere de chaque chaine

 

Sujets relatifs
[Resolu]Delphi/Directx : Plus d'image en grande résolution[RESOLU] savoir si une cellule appartient a une zone
[résolu]Classes pour faciliter l'utilisation de sockets C, en C++[MySql] requete group by + order by { RESOLU }
[Résolu] Récupere la valeur d'un Selectméthode la plus rapide pour afficher un (très) gros tableau
[résolu] Compatibilité du codage des fichiers, serveurs windows et L..pb pour afficher un champ file
[Résolu] Débutant : Installer BD Sql Server sur un DD réseau[Résolu] Affichage alterné 50% / 50%
Plus de sujets relatifs à : [RESOLU] extraire et afficher premier caractere de chaque chaine


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