11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je m'appelle Benoît, je suis étudiant et webmaster à mes heures perdues et je suis en train d'améliorer le site d'internet d'un ami en ce qui concerne ses formulaires d'inscription ...

Mon ébauche ce trouve à cette adresse : http://polepassion.fr/test/inscriretelethon.php

Je n'ai pas trouvé de solutions à mon problème qui concerne l'envoi de ce formulaire couplé a la vérification du formulaire en javascript.

Explications :

J'envoie mon formulaire vers mon adresse mail grâce au script php Form2mail ci-après :

<?php

// Necessary Variables:

$TO = "XXXX@XXXX.fr";
	// En: E-Mail of mail recipient.
	// Fr: E-Mail pour l'envoie.
	
$DEFAULT_EXIT_PAGE = "http://www.polepassion.fr/merci.php";
	// En: exit page.
	// Fr: page de sortie.

// End  Necessary Variables section
/******************************************************************************/

$headers  = "From: Anonymous on $SERVER_NAME <$mail>\n";
$headers .= "X-Mailler: PHP 3 Form2Mail made by FTLS,  http://www.ftls.org/\n";
 

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) { 
	$message .= "$key : $val\n"; 
} 
/*
$message .= "\nSent by ".gethostbyaddr($REMOTE_ADDR). " ($REMOTE_ADDR)\n";
*/
mail($TO, $subject, $message, $headers); 
	// En : Send mail
	// Fr : Envoi du mail 

if(! $exit_page)
	$exit_page = $DEFAULT_EXIT_PAGE;

Header("Location: ".$exit_page);
	// Exit -> $exit_page

?>


et je vérifie mon formulaire avec ce script js :

    <script language="JavaScript1.1">
      function checkmail(imail) {
         var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
         return (reg.exec(imail)!=null)
      }


function check_form(){
	var email=document.getElementsByName("email")[0].value;
	var nom=document.getElementsByName("nom")[0].value;
	var tel=document.getElementsByName("telephone")[0].value;
	if (nom !==""){
	if (email!==""){
	if (!checkmail(email)){ 
	     alert("E-mail incorrect !"); 
	}
	else {
	if (tel !==""){
		document.getElementsByName("RESA")[0].submit();
	}else{
		alert("Veuillez renseigner le champ Téléphone");
	} }	}
	else{
		alert("Veuillez renseigner le champ E-mail");
	}
	}
	else {
		alert("Veuillez renseigner le champ Nom");
	}

}
</script>


Mon problème est quand je valide le formulaire avec un champ obligatoire non rempli (avec les * a coté) mon formulaire s'envoie quand même Smiley decu vous pouvez tester cela ne me dérange pas d'être flooder c'est une adresse poubelle ...

Auriez-vous une solution pour palier à ce problème ? un truc du genre "if formulaire pas correct -> n'envoie pas" ?

Je vous remercie d'avance,
@+
Benoit
Modifié par ben2134 (05 Aug 2010 - 14:24)
Salut Benoît et bienvenue, Smiley smile

je vais supposer que tu appelles ta fonction sur le onsubmit de l'élément FORM (onsubmit="return check_form()") puisque c'est ce qu'il est préconisé de faire auquel cas il suffit que ladite fonction renvoie false en cas d'erreur et true si tout est ok.

Lire en complément : http://openweb.eu.org/articles/validation_formulaire/

Au passage ce n'est pas
<script language="JavaScript1.1">
mais
<script type="text/javascript">
Merci de cette réponse rapide,

J'ai bien lu l'article en complément et je me suis rendu compte qu'il manquait un
return false;
à chaque
else
du code javascript.

J'ai aussi appelé ma focntion onsubmit="return check_form()" depuis la balise <form> et cela marche parfaitement à présent.

Encore merci,
A très bientôt,

Benoît.