Js/xhtml : form et confirm()

Résolu/Fermé
doudoupe Messages postés 85 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 7 mars 2012 - Modifié par doudoupe le 15/07/2010 à 18:14
doudoupe Messages postés 85 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 7 mars 2012 - 15 juil. 2010 à 19:21
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

doudoupe Messages postés 85 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 7 mars 2012 68
15 juil. 2010 à 18:34
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 ??
0
doudoupe Messages postés 85 Date d'inscription mercredi 3 juin 2009 Statut Membre Dernière intervention 7 mars 2012 68
15 juil. 2010 à 19:21
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é.
0