Javascript dans javascript

Javascript dans javascript - HTML/CSS - Programmation

Marsh Posté le 13-03-2006 à 09:56:44    

Bonjour,
 
Je voudrais savoir s'il était possible de faire appel à une fonction javascript dans un javascript ? Je m'explique j'ai un formulaire qui fais appel à un script quand on l'envoie pour vérifier les données, genre si y'a bien un nom, prénom, mail,... Et je voudrais intégrer en plus une vérification de date (enfin 2 vérif en fait). Est-ce que c'est possible ? En gros dans l'exemple est-ce que je peux intégrer le "IsDate" dans le "fnVerifCarte" ?
 
J'ai essayé un truc comme ça pour l'instant mais j'ai dû me craquer quelquepart :
 

Code :
  1. function fnVerifCarte(){
  2. //Vérif nom
  3. if (document.form_carte.nom.value=="" ){
  4.  ...
  5.  }
  6. //Vérif mail
  7. var email = document.form_carte.email.value;
  8. if (document.form_carte.email.value=="" ){
  9.  ...
  10. }else if ((-1 == email.indexOf( '@' ,0)) || (-1 == email.indexOf('.',0 ))) {
  11.   ...
  12.  }
  13. //Vérif date début et date fin
  14. var datedeb = document.form_carte.datedeb.value;
  15. var datefin = document.form_carte.datefin.value;
  16. if (isdate(datedeb)){
  17.  ...
  18. }else {
  19.    ...
  20.  }
  21. if (isdate(datefin)){
  22.  ...
  23. }else {
  24.    ...
  25.  }
  26. function isDate(d) {
  27.     if (d == "" ) // si la variable est vide on retourne faux
  28.         return false;
  29.    
  30.     e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$" );
  31.    
  32.     if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
  33.         return false;
  34.     // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  35.     j = parseInt(d.split("/" )[0], 10); // jour
  36.     m = parseInt(d.split("/" )[1], 10); // mois
  37.     a = parseInt(d.split("/" )[2], 10); // année
  38.     // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  39.     if (a < 1000) {
  40.         if (a < 89)    a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
  41.         else a+=1900;
  42.     }
  43.     // Définition du dernier jour de février
  44.     // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  45.     if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  46.     else fev = 28;
  47.     // Nombre de jours pour chaque mois
  48.     nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
  49.     // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  50.     return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
  51. }


 
 
Edit : je début en js donc j'ai sûrement fais quelques erreurs. Si vous avez des conseils, n'hésitez pas  :hello:


Message édité par WhiskyWalker le 13-03-2006 à 10:02:34
Reply

Marsh Posté le 13-03-2006 à 09:56:44   

Reply

Marsh Posté le 13-03-2006 à 10:02:03    

déjà dis nous ce qui ne marche pas dans ce que tu as fait et file aussi le code HTML de ta page

Reply

Marsh Posté le 13-03-2006 à 10:06:10    

gatsu35 a écrit :

déjà dis nous ce qui ne marche pas dans ce que tu as fait et file aussi le code HTML de ta page


 
J'ai dis que ça venait d'un formulaire, en gros la partie utilisée c'est ça :
 

Code :
  1. <form name="form_carte" method="post" action="envoi_a_la_carte.php" onSubmit="return fnVerifCarte()">
  2.                 <tr>
  3.                   <td class="description"><img src="imgs/puceV.gif" width="5" height="5"> D&eacute;part entre le :</td>
  4.                   <td class="description"><input type="text" name="datedeb" VALUE="" class="Input" MAXLENGTH="10" SIZE="4"> (jj/mm/aa)</td>
  5.                   <td class="description"><img src="imgs/puceV.gif" width="5" height="5"> Et le :</td>
  6.                   <td class="description"><input type="text" name="datefin" VALUE="" class="Input" MAXLENGTH="10" SIZE="4"> (jj/mm/aa)</td>
  7.                 </tr>
  8. </form>


 
J'ai beau mettre n'importe quelle date, il ne fait pas le test, pour les autres tests marchent nickel. J'ai dû oublier un ptit truc quelquepart mais je vois pas où  :heink:

Reply

Marsh Posté le 13-03-2006 à 10:18:31    

le code que tu as écrit "devrait marcher" ...
N'as tu pas une erreur lors de l'execution (icone jaune en bas a gauche sur IE ou menu>outils>console javascript sous FF?
 
Quand tu dis "il ne fait pas le test", tu veux dire qu'il ne fait pas le test ( oui bon ça va ...) ou alors qu'a chaque fois il va dans le else?
 
Enfin fais juste ça:

Code :
  1. function isDate(d) {
  2.    alert('pouet');
  3.    if (d == "" ) // si la variable est vide on retourne faux
  4.    ...
  5. }


pour voir si ta fonction est bien appelée!

Reply

Marsh Posté le 13-03-2006 à 11:05:43    

anapajari a écrit :


pour voir si ta fonction est bien appelée!


 
J'ai pas d'alerte, donc la fonction a pas l'air d'être appelée  :(

Reply

Marsh Posté le 13-03-2006 à 11:16:51    

donc tu as une erreur avant... que te dit la console ?
 
t'aurais pas un lien vers ta page ça irait plus vite!

Reply

Marsh Posté le 13-03-2006 à 12:12:01    

Citation :

J'ai pas d'alerte, donc la fonction a pas l'air d'être appelée  :(


Citation :

Code :
  1. function fnVerifCarte(){
  2.   //Vérif nom
  3.   if (document.form_carte.nom.value=="" ){
  4.     ...
  5.   }
  6.   //Vérif mail
  7.   var email = document.form_carte.email.value;
  8.   if (document.form_carte.email.value=="" ){
  9.     ...
  10.   }else if ((-1 == email.indexOf( '@' ,0)) || (-1 == email.indexOf('.',0 ))) {
  11.     ...
  12.   }
  13.   ...



 
Si isDate() n'est pas appellée, c'est que soit fnVerifCarte() n'est pas appellée, soit il y a un return pendant la vérif du nom ou du mail

Reply

Marsh Posté le 13-03-2006 à 14:33:00    

Bidem a écrit :

Si isDate() n'est pas appellée, c'est que soit fnVerifCarte() n'est pas appellée, soit il y a un return pendant la vérif du nom ou du mail


 
Exact. Voilà le code de cette partie :
 

Code :
  1. function fnVerifCarte(){
  2. //Vérif nom
  3. if (document.form_carte.nom.value=="" ){
  4.  alert("Renseignez votre nom !" );
  5.  document.form_carte.nom.focus();
  6.  return  false;
  7.  }
  8. //Vérif prénom
  9. if (document.form_carte.nom.value=="" ){
  10.  alert("Renseignez votre nom !" );
  11.  document.form_carte.nom.focus();
  12.  return  false;
  13.  }
  14. //Vérif mail
  15. var email = document.form_carte.email.value;
  16. if (document.form_carte.email.value=="" ){
  17.  alert("Renseignez votre E-mail !" );
  18.  document.form_carte.email.focus();
  19.  return  false;
  20. }else if ((-1 == email.indexOf( '@' ,0)) || (-1 == email.indexOf('.',0 ))) {
  21.   alert("L'adresse E-mail est incorrecte" );
  22.   return false;
  23.  }


 
y'a pas besoin de mettre le Return ?


Message édité par WhiskyWalker le 13-03-2006 à 14:33:37
Reply

Marsh Posté le 13-03-2006 à 14:36:07    

Dès qu'il y a "return false", l'execution de la fonction s'arrête...
 
Donc ça dépend de ce que tu veux faire:
- T'arreter à la 1ere erreur ( auquel cas le return false est bien placé)
- Afficher toutes les erreurs en même temps ( auquel cas faut tout refaire)

Reply

Marsh Posté le 13-03-2006 à 14:45:27    

Ben il vérifie les champs du formulaire un par un et dès qu'il trouve une erreur il s'arrête donc pour moi c'est bon nan ?

Reply

Sujets relatifs:

Leave a Replay

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