Js/xhtml : form et confirm()
Résolu
doudoupe
Messages postés
94
Statut
Membre
-
doudoupe Messages postés 94 Statut Membre -
doudoupe Messages postés 94 Statut Membre -
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) :
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():
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" ?
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
-
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 ?? -
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é.