[PHP + JavaScript] Execution d'un script methode onSubmit

Résolu
cs_alextec Messages postés 20 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 22 février 2007 - 22 févr. 2007 à 09:31
cs_alextec Messages postés 20 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 22 février 2007 - 22 févr. 2007 à 10:50
Bonjour à tous, ne sachant pas vraiment où mettre mon message je le met ici, désolé aux modérateurs si je me suis trompé veuillez m'en excuser...

Voilà mon souci j'ai un formulaire en php avec un script  (javascript) de vérification des champs sur la meme page.
Extrait du code :
echo"<form name='formulaire'  action='ajouterpersonne.php' method='POST' onSubmit='return verif_formulaire()'>
   <table border='0' bgcolor='' width=''>
   <tr>
        <td>  Nom : </td>
        <td>  </td>
   </tr>


   <tr>
    <td> Prenom : </td>
        <td>  </td>
   </tr>


   <tr>
    <td> Date de naissance (xx/xx/xx) : </td>
        <td> </td>
   </tr>

    <tr>
         <td></td>
         <td>
    </tr>

extrait du javascript
<script type="text/javascript">


<!--
function verif_formulaire()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer le nom!");
   document.formulaire.nom.focus();
   return false;
  }


  if(document.formulaire.prenom.value == "")  {
   alert("Veuillez entrer le prenom!");
   document.formulaire.nom.focus();
   return false;
  }

...
</script>

Je pensais qu'avec "<form name='formulaire'  action='ajouterpersonne.php' method='POST' onSubmit='return verif_formulaire()' il ne passerais qu'a la page ajouterpersonne que si le script était vrai... hors meme avec les champs vide j'ai l'impression que mon script ne s'execute pas. onSubmit n'est pas la bonne méthode ?
Je suis un peu étonné car là je ne voi pas ma faute...
Merci pour vos réponses.
A voir également:

6 réponses

lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020 1
22 févr. 2007 à 10:39
Re,

Ta fonction est mal refermer, il te manquait une accolade :
 
function verif_formulaire()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer le nom!");
   document.formulaire.nom.focus();
   return false;
  }

  if(document.formulaire.prenom.value == "")  {
   alert("Veuillez entrer le prenom!");
   document.formulaire.nom.focus();
   return false;
  }

mot=document.formulaire.datenaissance.value;

if (mot.length!=10){alert
   ("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");
   return false;}
else
{
    motjour=mot.substring(0,2);motmois=mot.substring(3,5);
    motan=mot.substring(6,10);motsep=mot.charAt(2)+mot.charAt(5);}
    if (isNaN(motjour+motmois+motan)|| motan>3000 ||motan<1900 || motsep!="//"){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");return false;}
    else {choix="";}
    if (motan-(parseInt(motan/4)*4)==0){choix="bi"};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/100)*100)==0)
    {choix=""};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/400)*400)==0)
    {choix="bi"}
    switch (motmois){
    case "01":if(motjour<1 || motjour>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case"02":if(choix=="bi"){if(motjour<1 || motjour>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");return false;}}
              else{if(motjour<1 || motjour>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");return false;}};
    break;
    case "03":if(motjour<1 || motjour>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "04":if(motjour<1 || motjour>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "05":if(motjour<1 || motjour>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "06":if(motjour<1 || motjour>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "07":if(motjour<1 || motjour>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "08":if(motjour<1 || motjour>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "09":if(motjour<1 || motjour>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return;false};
    break;
    case "10":if(motjour<1 || motjour>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");return false;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");return false;};
   if(document.formulaire.adresse.value == "")  {
   alert("Veuillez saisir une adresse!");
   document.formulaire.nom.focus();
   return false;
  }
  if(document.formulaire.nbrenfants.value == "")  {
   alert("Veuillez saisir le nombre d'enfant (0 si la personne n'en a pas)");
   document.formulaire.nom.focus();
   return false;
  }
}
3
cs_alextec Messages postés 20 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 10:50
J'ai trouver une erreur :
   
case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");return false;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");return false;} supprimer le ;  après l'accolade

   if(document.formulaire.adresse.value == "")  {
   alert("Veuillez saisir une adresse!");
   document.formulaire.nom.focus();
   return false;
  }

dommage qu'on ne puisse pas éditer ses messages...
3
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020 1
22 févr. 2007 à 10:31
Bonjour,

Apres avoir testé chez moi, les seules erreures que j'ai pu voir sont :

- pas de fermeture de la balise <table>
- pas de fermeture de la balise <form>
- il manque une accolade pour refermer ta fonction verif_formulaire()

Sinon, ca fonctionne bien.

bonne prog
0
cs_alextec Messages postés 20 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 10:33
Mes balises sont fermées, j'ai mis juste des parties de mon code...
Je comprends vraiment pas pourquoi sa marche pas...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_alextec Messages postés 20 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 10:35
en faite je sais peut etre pourquoi sa ne marche pas voila tout mon javascript :
<script type="text/javascript">


<!--
function verif_formulaire()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer le nom!");
   document.formulaire.nom.focus();
   return false;
  }


  if(document.formulaire.prenom.value == "")  {
   alert("Veuillez entrer le prenom!");
   document.formulaire.nom.focus();
   return false;
  }

mot=document.formulaire.datenaissance.value;


if (mot.length!=10){alert
   ("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");
   return false;}
else
{
    motjour=mot.substring(0,2);motmois=mot.substring(3,5);
    motan=mot.substring(6,10);motsep=mot.charAt(2)+mot.charAt(5);}
    if (isNaN(motjour+motmois+motan)|| motan>3000 ||motan<1900 || motsep!="//"){alert("Veuillez introduire votre date de naissance au format JJ/MM/AAAA (exemple : 12/02/1981)");return false;}
    else {choix="";
    if (motan-(parseInt(motan/4)*4)==0){choix="bi"};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/100)*100)==0)
    {choix=""};
    if (motan-(parseInt(motan/4)*4)==0&&motan-(parseInt(motan/400)*400)==0)
    {choix="bi"}
    switch (motmois){
    case "01":if(motjour<1 || motjour>31){alert("Le mois de Janvier comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case"02":if(choix=="bi"){if(motjour<1 || motjour>29){alert("Le mois de Février comporte 29 jours car l'année choisie est bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 29.");return false;}}
              else{if(motjour<1 || motjour>28){alert("Le mois de Février comporte 28 jours car l'année choisie n'est pas bissextile.\nVeuillez choisir une date de naissance comprise en 1 et 28.");return false;}};
    break;
    case "03":if(motjour<1 || motjour>31){alert("Le mois de Mars comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "04":if(motjour<1 || motjour>30){alert("Le mois de Avril comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "05":if(motjour<1 || motjour>31){alert("Le mois de Mai comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "06":if(motjour<1 || motjour>30){alert("Le mois de Juin comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return false;};
    break;
    case "07":if(motjour<1 || motjour>31){alert("Le mois de Juillet comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "08":if(motjour<1 || motjour>31){alert("Le mois de Août comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "09":if(motjour<1 || motjour>30){alert("Le mois de Septembre comporte 30 jours, veuillez choisir une date de naissance comprise en 1 et 30.");return;false};
    break;
    case "10":if(motjour<1 || motjour>31){alert("Le mois de Octobre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    case "11":if(motjour<1 || motjour>30){alert("Le mois de Novembre comporte 30 jours, veuillez choisirune date de naissance comprise en 1 et 30.");return false;};
    break;
    case "12":if(motjour<1 || motjour>31){alert("Le mois de Décembre comporte 31 jours, veuillez choisir une date de naissance comprise en 1 et 31.");return false;};
    break;
    default:alert("Le mois que vous avez entré n'est pas valide. Choisissez un mois compris entre 1 et 12.");return false;};
   if(document.formulaire.adresse.value == "")  {
   alert("Veuillez saisir une adresse!");
   document.formulaire.nom.focus();
   return false;
  }
  if(document.formulaire.nbrenfants.value == "")  {
   alert("Veuillez saisir le nombre d'enfant (0 si la personne n'en a pas)");
   document.formulaire.nom.focus();
   return false;
  }
}

Quelqu'un me trouve une erreur la dedans ?
0
cs_alextec Messages postés 20 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 10:42
Un grand merci, pour ceux/celle que cela interesse le script de vérification de date, regarde ou la date n'est pas bonne et gere les années bixetile, je l'ai récuperais je ne sais plus ou et retoucher pour qu'il soit compatible avec le reste : c'est a dire qu'il renvoye false.

Merci encore !! 40 minutes sur une accolade....

Cordialement Alexandre.
0