Js/xhtml : form et confirm()

Résolu
Bonjour,
J'ai un formulaire constituer de 17 champs puis un bouton "submit".
Plus clair qu'une explication voici les parties du code qui posent probleme:

Mon formulaire (sans les inputs, ils ne posent pas problème) :

<?php include("confirmMessage.js"); ?>  

<form id="my_form" action="process.php" method="post" onsubmit="confirmMessage()">  
    ...  
    Tous mes <input />  
    ...  
    <input type="submit" name="send" value="Enregistrer" id="send" />  

</form>


Et mon fichier confirmMessage.js qui doit vérifier que les champs ne sont pas vide et demander la confirmation à l'utilisateur grâce à confirm():

<script type="text/javascript">  
// <!-- <![CDATA[  

function confirmMessage(){  
   
for(var i=0; i<16; i++)  
{  
 if(document.forms['my_form'].elements[i].value != "") {   
     return confirm("Confirmer les données?");  
 }  
   else {  
     alert("Veuillez saisir tous les champs");  
     return false;  
 }  
}  
} 

//]]> -->  
</script>


Le problème est que même si les champs sont vides, l'appel à "confirm" est fait.
D'où : Y a t'il un problème avec cette ligne :: ?

if(document.forms['my_form'].elements[i].value != "")

Merci pour vos réponses.

EDIT: En fait, je remarque que le for et le if ne sont pas bien gérés... Mais comment faire pour que lorsqu'au moins un champs sur les 17 est vide, on appelle le "alert" ? et si tout est rempli on appelle "confirm" ?

2 réponses

  1. Résolu :

    Note pour les gens qui cherche comme moi :

    Le code du dernier post fonctionne bien, en ajoutant simplement un '=' que j'avais oublié dans la condition! :D

    Et il faut aussi penser à mettre dans la balise <form> le 'return' à l'attribut onsubmit
    ->> <form ... onsubmit="return confirmMessage();"

    Autrement, quelques soit le résultat de confirmMessage(), le formulaire est envoyé.
    1. J'ai modifier mon script js, et je pensais que ça devait fonctionner :

      <script type="text/javascript">
      // <!-- <![CDATA[
      
      function confirmMessage(){
      
      	var vide = false;
      	for(var i=0; i<16; i++)
      	{
      		if(document.forms['my_form'].elements[i].value = "") vide = true;
      	}
      	
      	if(vide) {
      		alert("Veuillez saisir tous les champs!");
          	        return false;
      	}
        	else {
          	        return confirm("V\351rifiez et confirmez le nouveau souscripteur?");
      	}
      }
      
      //]]> -->
      </script>
      


      Mais ça ne fonctionne pas non plus, donc je suppose que cela vient bien de la ligne :
      if(document.forms['my_form'].elements[i].value = "")

      Autrement, lorsque je clique sur annuler à l'appel de "confirm", ça envoit tout de meme le formulaire à la page de traitement...
      Un problème dans mes return ??