JS - debug d'1 script - controle formulaire

Fermé
Fugita - 28 juil. 2004 à 13:00
 fugita - 29 juil. 2004 à 17:07
Bonjour,

j'ai un ptit probleme pour débugger cette fonction javascript.

Appellée au moment de la soumission du formulaire (onSubmit() ), elle reçoit en paramètre le nombre d'élément du formulaire, et retourne TRUE si tous les champs sont remplis, FALSE si il ya un champ vide (dans ce cas, l'envoi est arrêté, un alert() précise d'où vient l'erreur et un focus() pointe le champ en question.

voici le code :
function valider(n) {
	var i=0;
	for (i=0;i<n;i++)
		{
		if (document.forms['form1'].element[i].value=="")
			{
			alert("Le champs "+document.forms[0].element[i].name+" doit etre rempli");
			document.forms[0].element[i].focus();
			return FALSE;
		}
	}
	return TRUE;
}


puis...
<form method="post" name="form1" onSubmit="return valider(this.elements.length)" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data">

6 réponses

...je continue...
Sous Mozilla-Firebird on ne rentre pas dans le 'if' et sous Internet Explorer le script plante justement lors du test :
"Erreur : 'document.fomrs.form1.element' a la valeur NULL ou n'est pas un objet"

voila voila, vous savez tout ^^
merci d'avance

Fu'
0
Personne pour m'aider :-( ?

Ca pourrait pourtant servir à d'autes personnes une fois débuggé...

Fu'
0
Salut
function valider(n) {
	var i=0;
	for (i=0;i<n;i++)
		{
		if (document.forms[0].elements[i].value=="")
			{
			alert("Le champ " + document.forms[0].elements[i].name + " doit etre rempli");
			document.forms[0].elements[i].focus();
			return false;
			}
		}
	return true;
}
</script>
</head><body bgcolor="#ffffff">
		<form name="form1" action="suite.html" method="post" onclick="return valider(10);">
			<p>E-mail : <input type="text" name="email" size="38"></p>
			<p>Téléphone : <input type="text" name="tel" size="38"></p>
			<p><input type="submit" name="soumission" value="valutation"></p>
		</form>
	</body>
Amélioration à apporter : ne pas fournir le nombre de champs du FORM, mais le calculer dans la fonction.
0
Merci beaucoup ric !

arf, 2 fautes de débutant :-/
c'est
elements

et
false et non pas FALSE...

Je retiens !

a+
Fu'
0

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

Posez votre question
Voici la fonction complète pour vérifier que tous les champs d'un formulaire sont vide ou non :

function valider(n) {
	var i=0;
	for (i=0;i<n;i++)
		{
		if (document.forms['0'].elements[i].value=="")
			{
			alert("Le champ "+document.forms[0].elements[i].name+" doit etre rempli");
			document.forms[0].elements[i].focus();
			return false;
		}
	}
	return true;
}


et l'appel de la fonction grace à la fonction onSubmit() (/!\ toujours utiliser un bouton submit et pas de type "button" !
<form method="post" name="form1" onSubmit="return valider(this.elements.length)" action="confirmation.html">


La fonction "this.elements.length" renvoie le nombre d'éléments du formulaire courant.

A noter que ce script fonctionne sous Internet Explorer et Mozilla (testé sous Firefox0.92)

NB2 : cette fonction vérifie le premier formulaire de la page. Si il y en a plusieurs, il faut changer le chiffre de forms['numero du formulaire']

J'espère que ça en aidera d'autres :-)

a+
Fu'
0
0