Petit problème Javascript Validation formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Petit problème Javascript Validation formulaire

par BaLiSTiK » 25 janv. 2008, 15:47

J ai réussi à résoudre mon soucis, mais je sais plus trop comment. Pour info voila le code source javascript :

Code : Tout sélectionner

function verification(){ if(document.formulaire.nom.value == '') { alert ('veuillez entrer votre Nom'); document.formulaire.nom.focus(); return false; } if(document.formulaire.sexe.value == '') { alert ('veuillez decliner votre civilite'); document.formulaire.sexe.focus(); return false; } if(document.formulaire.prenom.value == '') { alert ('veuillez entrer votre Prenom'); document.formulaire.prenom.focus(); return false; } if(document.formulaire.region.value == 'Selectionnez la région') { alert ('veuillez entrer votre region'); document.formulaire.region.focus(); return false; } var mail = document.formulaire.mail.value; if (mail.search(/^[_a-z0-9-]+[@][a-z0-9-]+\.[a-z0-9]{2,4}$/)) { alert ('entrez une adresse Email valide'); document.formulaire.mail.focus(); return false; } if(document.formulaire.an.value == '') { alert ('veuillez entrer votre année de naissance'); document.formulaire.an.focus(); return false; } var tel = document.formulaire.tel.value; if (tel.search(/^[0-9]{10}$/)){ alert ('entrez un numero de telephone valide'); document.formulaire.tel.focus(); return false; } return true; }
Là sur le coup, je sais plus ou était mon erreur, mais comme je l'ai supposé au départ, ça devait être un truc à la con. Merci pour l'aide :)

par Ryle » 17 janv. 2008, 00:12

Ton formulaire dispose-t-il bien d'un bouton de type submit ? sans quoi le onSubmit du formulaire n'est jamais appellé. (Nota : un form.submit() ne déclenche pas le onSubmit)

Pour le vérifier facilement, ajoute une alert() dans le onSubmit, avant le return verification(), et regarde si elle est bien appellée quand tu soumet le formulaire. Si oui alors déplace l'alerte dans la fonction vérification, au début, puis après le premier if() etc. pour voir jusqu'où elle est appellée et identifier ce qui peut poser problème :)

Et question bête mais... pourquoi un <![CDATA[...]]> ? tu es dans un fichier xml ?

par BaLiSTiK » 16 janv. 2008, 20:48

J ai trouvé une erreur identique et corrigé. Le javascript en entier :
<![CDATA[ 
function verification(){
	
    var mail = document.formulaire.mail.value; 
    if (mail.search(/^[_a-z0-9-]+[@][a-z0-9-]+\.[a-z0-9]{2,4}$/)) { 
            alert ('entrez une adresse Email valide'); 
            document.formulaire.mail.focus(); 
            return false; 
        } 

    if(document.formulaire.nom.value == '') { 
        alert ('veuillez entrer votre Nom'); 
        document.formulaire.nom.focus(); 
        return false; 
    }
		
	if(document.formulaire.prenom.value == '') { 
        alert ('veuillez entrer votre Prenom'); 
        document.formulaire.prenom.focus(); 
        return false; 
    	}

	if(document.formulaire.region.value == '') { 
        alert ('veuillez entrer votre region'); 
        document.formulaire.region.focus(); 
        return false; 
    	}
	if(document.formulaire.an.value == '') { 
        alert ('veuillez entrer votre année de naissance'); 
        document.formulaire.an.focus(); 
        return false; 
    	}
	
	var tel = document.formulaire.tel.value;
	if (tel.search(/^[0-9]{10}$/)){
	    alert ('entrez un numero de tel valide'); 
        document.formulaire.tel.focus(); 
        return false; 
    } 
return true;
} 
]]>

mais il n est toujours pas appelé :(

par Ryle » 14 janv. 2008, 18:02

T'as également une erreur de syntaxe ici, il manque la parenthèse fermante du if() (ou du search(), comme tu veux :)) :
if (mail.search(/^[_a-z0-9-]+[@][a-z0-9-]+\.[a-z0-9]{2,4}$/) { 
Et je maintiens, ton else ne sert à rien ;)
if(document.formulaire.prenom.value == '') { 
  ...
  return false;
} 

return true; // si on arrive ici c'est que la fonction a passé tous les if() sans retourner false, donc sans erreur :)

par BaLiSTiK » 14 janv. 2008, 16:11

J ai rectifié pour le crochet mais toujours pareil.

Le formulaire est un simple formulaire basique, rien d'extraordinaire :

Code : Tout sélectionner

<form method="post" action="" name="formulaire" onsubmit="return verification();"> <div class="coord"> Nom :<br /><input type="text" name="nom" size="50" /><br /> Pr&eacute;nom :<br /><input type="text" name="prenom" size="50" /> <br /><br /> Mail :<br /> <input type="text" name="mail" size="50" /> &nbsp;<sub><em>Veuillez ins&eacute;rer un format valide : [email protected]</em></sub> <br /> ... </div> </form>
et le code javascript correspondant :

Code : Tout sélectionner

function verification(){ var mail = document.formulaire.mail.value; if (mail.search(/^[_a-z0-9-]+[@][a-z0-9-]+\.[a-z0-9]{2,4}$/) { alert ('entrez une adresse Email valide'); document.formulaire.mail.focus(); return false; } if(document.formulaire.nom.value == '') { alert ('veuillez entrer votre Nom'); document.formulaire.nom.focus(); return false; } if(document.formulaire.prenom.value == '') { alert ('veuillez entrer votre Prenom'); document.formulaire.prenom.focus(); return false; } else {return true;} }
Voila un peu plus de code ^^.

par Ryle » 14 janv. 2008, 15:57

euh... le crochet du cdata il est pas au bon endroit à priori...
<![CDATA[
function verification(){
[
var mail = document.formulaire.mail.value;
etc...
else {return true;}
}
]]>
Et pis comme ton code est coupé, on sait pas trop à quoi correspond le else.. j'ai l'impression qu'il ne s'applique qu'au dernier if(), mais ne doit à priori servir à rien (puisque toutes les erreurs auront retourné false avant...

par BaLiSTiK » 14 janv. 2008, 14:55

J'ai un soucis équivalent. Mon formulaire n'arrive pas à faire appel à mon Javascript alors que j ai déjà coder plusieurs fois ce type de programmes. Je dois vraiment avoir une erreur à la con mais je n'arrive pas à la voir.
Ma page html :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link href="styles.css" rel="stylesheet" type="text/css" /> <title>Page de formulaire</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script type="text/javascript" src="verification.js"></script> </head> <body> <form method="post" action="" name="formulaire" onsubmit="return verification();"> [i]Mon formulaire[/i] </form> </body> </html>
et le fichier javascript attaché :

Code : Tout sélectionner

<![CDATA function verification(){ [ var mail = document.formulaire.mail.value; if (mail.search(/^[_a-z0-9-]+[@][a-z0-9-]+\.[a-z0-9]{2,4}$/) { alert ('entrez une adresse Email valide'); document.formulaire.mail.focus(); return false; } if(document.formulaire.nom.value == '') { alert ('veuillez entrer votre Nom'); document.formulaire.nom.focus(); return false; } [i]etc...[/i] else {return true;} } ]]>
Si vous voyez une erreur merci de me préciser ^^, car c'est pour un TP noté :)

par Patriboom » 29 déc. 2007, 16:56

La façon que je privilégie pour les contrôles de formulaires est celle-ci:

un fonction de contrôle qui retourne true ou false selon que les critères sont remplis ou non.

Celle fonction est appelée par <form on submit=""> comme suit:

Code : Tout sélectionner

<FORM ACTION="page_suivante.php?fct=Action_a_Faire" name="Questionne" Method=POST onSubmit="return Verif(this.form)">

Ma fonction de vérification étant:

Code : Tout sélectionner

function Verif(contenu) { final = true; if ( document.Questionne.NAISSANCE.value == "0000-00-00") { alert ("Date de naissance invalide"); document.Questionne.NAISSANCE.focus(); final = false; } return final; }
où Questionne est le nom du formulaire.

par Ryle » 29 déc. 2007, 14:46

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Javascript, AJAX".

Petit problème Javascript Validation formulaire

par emmiedax » 29 déc. 2007, 14:32

Bonjour à tous;

J'ai un problème avec un javascript que j'utilise souvent, mais sur free.fr, il me donne une erreur :

document.redirect has no peoporties

Cela se passe comme suit:

J'ai un formulaire. Lorsqu'il est validé, un input hidden détermine une action php action='verifDonnees'
Dans la function verifDonnees, il vérifie que tous les champs soit bien remplis et ensuite créé un formulaire appelé redirectt suivi d'un scrip javascript qui valide automatiquement redirect.

if($passe_etape_2 != "non"){
			unset ($_SESSION[CODE_SECURITE]);
			echo "
																<tr><td><form name='redirect' action='contacts_envoie.php' method='post'>
																		<input type='hidden' name='email' value='".$_POST[courriel]."'>
																		<input type='hidden' name='subject' value='".$_POST[subject]."'>
																		<input type='hidden' name='msg' value='".$_POST[msg]."'>
																</form>
																<script type='text/javascript' language='JavaScript'>document.redirect.submit();</script></td></tr>";
		}
Est-ce que quelqu'un aurait une solution pour moi.

Merci d'avance à tous pour votre temps et joyeuses fetes à tous.

July