Petit problème Javascript Validation formulaire

Eléphanteau du PHP | 43 Messages

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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".
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 881 Messages

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.
Soyez artisans de paix

Eléphant du PHP | 398 Messages

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é :)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 398 Messages

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 ^^.
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 398 Messages

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é :(
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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 ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 398 Messages

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 :)
----------------------------------------------------------------------------------
https://astro-otter.space - Discover wonders and mysteries of Universe