[RESOLU] extraire et afficher premier caractere de chaque chaine

extraire et afficher premier caractere de chaque chaine [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 15-06-2008 à 13:16:18    

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
Reply

Marsh Posté le 15-06-2008 à 13:16:18   

Reply

Marsh Posté le 15-06-2008 à 20:29:10    

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
Reply

Marsh Posté le 17-06-2008 à 17:57:21    

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. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed