Fin de script en cas d'erreur de saisir

Résolu
thibault_developper Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
thibault_developper Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'envoie un mail à partir d'un formulaire, au submit du formulaire, j'execute une fonction de controle des champs saisie,et si tout est correct après la fonction l'action du formulaire se déroule, mais par exemple si le champ nom est vide, il ne faudrait pas que l'action du formulaire se fasse, et que je reste sur ma page contact. Si vous avez une solution merci...

script :
<form action="sendmail.php" method="post" id="formulaire" name="contact">
.........
<input type="submit" name="envoyer" value="Envoyer" class="submit" onClick="controle()">
</form>

ma fonction de controle :
function controle()
{
if(contact.nom.value=='<?php echo $defaultnom; ?>' || contact.nom.value=='')
{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.nom.style.backgroundColor = "FFCC00";
}
}


ma page d'envoi du mail si la fonction ne retourne pas d'erreur :

<?php
$destinataire = 'revel.thibault@hotmail.fr';
$expediteur = $_POST['email'];
$message = $_POST['message'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$message = wordwrap($message, 70);
$subject = 'Formulaire site LCC';
$headers = 'From: '.$expediteur." - ".$nom." ".$prenom;
$mail_sent = mail($destinataire, $subject, $message, $headers);
if($mail_sent)
{
?>
<script language="javascript" type="text/javascript">
document.location.replace("merci.html");
</script>
<?php

} else {
?>
<script language="javascript">
alert("Attention votre mail n'a pas été transmis correctement !");
document.location.replace("contact.php");
</script>
<?php
}
?>
A voir également:

5 réponses

toto
 
Bonjour

Il faut mettre le contrôle dans la balise FORM et non pas dans le bouton :
<form action="sendmail.php" method="post" id="formulaire" name="contact" onSubmit="return controle();">

Dans ta fonction javascript controle, tu fais return true ou return false selon que tu décides d'envoyer le formulaire ou non
0
thibault_developper Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
Merci pour ta reponse mais le script m'envoie quand meme le mail alors que je retourne false, est ce que c'est normal ?

<form action="sendmail.php" method="post" id="formulaire" name="contact" onSubmit="controle();">



function controle()
{
if(contact.nom.value=='<?php echo $defaultnom; ?>' || contact.nom.value=='')
{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.nom.style.backgroundColor = "FFCC00";
return(false);
} else if(contact.email.value=='<?php echo $defaultemail; ?>' || contact.email.value=='')

{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.email.style.backgroundColor = "FFCC00";
return(false);
} else
{
return(true);
}
}
0
toto
 
Non, ça n'est pas normal. Fais un alert ("1"), alert("2") etc.. avant chaque sortie de ta fonction pour voir par où tu en sors.
0
thibault_developper Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
L'alert 1 s'affiche bien, mais l'action du formulaire se fait tout de meme, je vois pas d'ou vient l'erreur ..

function controle()
{
if(contact.nom.value=='<?php echo $defaultnom; ?>' || contact.nom.value=='')
{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
alert("1");
contact.nom.style.backgroundColor = "FFCC00";
return(false);
} else if(contact.email.value=='<?php echo $defaultemail; ?>' || contact.email.value=='')

{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.email.style.backgroundColor = "FFCC00";
alert("2");
return(false);
} else
{
alert("3");
return(true);
}
}
0

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

Posez votre question
thibault_developper Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   5
 
c'est ok javais mal lu ta solution, cétait onSubmit = "return controle();" et mois javais mis onSubmit="controle();"

merci
0