[javascript] button

Résolu/Fermé
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 20 nov. 2008 à 18:13
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 21 nov. 2008 à 16:28
Bonsoir à tous !,
L'utilisateur doit remplir un formulaire. je verifie ce formulaire avec une fonction js. Voila le code HTML et le js qui vérifie si le formulaire est correctement remplit :
<script language="JavaScript">
function VerifForm(formulaire)
{
	if (.................................)
	{
		document.monform.submit();
	}
	else
	{
		alert("Formulaire non complété intégralement !");
	}
}
</script>

<form action="page2.php" method="POST" name="monform">
     /* differents input type */
    <input type="button" value="Créer" name="creer" onClick="VerifSelect(this)" />
</form>

et sur ma page2.php j'aimerais qu'il effectue les opérations si on clique sur ce bouton
if(!empty($_POST['creer']))
{
   echo 'c ok ';
}

Mais cela ne fonctionne pas. Biensur en mettant un input type submit à la place de button cela fonctionne mais il me dirigera vers la page2 même si le formualire n'est pas correctement remplit ! (peut être existe -t-il une fonction qui empêche d'envoyer ?)
Merci !

3 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
20 nov. 2008 à 19:00
Oui

<form action="page2.php" method="POST" name="monform" onSubmit="return VerifForm('monform');">
     /* differents input type */
    <input type="Submit" value="Créer" name="creer"  />
</form>


et ta fct JS:

<script language="JavaScript">
function VerifForm(formulaire)
{
	if (champ1 pas bon)
	{
		alert("Champ1 mal rempli !");
          return false;
	
	}

//tu peux répéter ce test if autant de fois que tu as de champs
		
return true;	
}
</script>

si la fct retourne false (pas bon) le formulaire ne sera pas envoyé

si tout bon elle retourne true donc il part

0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
20 nov. 2008 à 20:10
Je viens de tester ta solution Alain_42, mais ça n'a pas l'air de fonctionner, je ne voit pas pourquoi ?
<script language="JavaScript">
function VerifForm(formulaire)
{
	var test1 = formulaire.test.value;
	
	if (test1="")
	{
		alert("Champ non rempli !");
        return false;
	
	}
	else
	{
		return true;
	}	
}
</script>


<form action="page2.php" method="POST" name="monform" onSubmit="return VerifForm('monform')" >
    <input type="text" name="test" />
    <input type="submit" value="Créer" name="creer" />
</form>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013
20 nov. 2008 à 23:13
Bonsoir,

petite erreur pour tester il ==

essayes comme ça:

<script language="JavaScript">
function VerifForm(formulaire){
	//on atteint l'élément par son id 
	//test champ1
	var test1 = document.getElementById('test1').value;
	if (test1==""){
		alert("Champ 1 non rempli !");
        return false;
	}
	//test champ2
	var test2 = document.getElementById('test2').value;
	if (test1==""){
		alert("Champ 2 non rempli !");
        return false;
	}
	//etc.....
//pas besoin du else
return true;
}
</script>


<form action="page2.php" method="POST" name="monform" onSubmit="return VerifForm('monform')" >
    <input type="text" name="test1" id="test1"/>
    <input type="text" name="test2" id="test2"/>
    <input type="submit" value="Créer" name="creer" />
</form>
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
21 nov. 2008 à 15:39
Bien vu ;)
Si vous êtes familiers avec ce genre d'erreur, faites :
if ("" == test1)

Ainsi, si vous ouliez un "=", ça génère une erreur et vous voyez tout de suite où est le problème !

Autre méthode, utiliser l'équivalence booléenne : si test1 est une chaîne vide, dans le if il prendra la valeur false. Il suffit donc de tester :
if (!test1)
Plus simple, tu meurs ...
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
20 nov. 2008 à 19:27
Salut,
je te propose la version "DOM level 2", libre à toi de l'adopter ou pas. Si tu trouves ça trop prise de tête, laisse béton, je t'en voudrai pas :P

Doc : http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents

On s'intéresse à l'évènement submit.
On l'attache comme suit (ne marche pas sous IE) :
document.getElementById('monForm').addEventListener('submit', verifierForm, false);


Il faut avoir (au préalable) défini une fonction verifierForm() :
function verifierForm(e) { // l'évènement est passé en argument
  if ( ...form non complet... ) {
    alert('pas bien');
    e.preventDefault();
  }
}


La méthode e.preventDefault() annule la soumission du formulaire.

Et j'ai les codes équivalents pour IE, si ça te branche tu me demandes ;)
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
21 nov. 2008 à 16:28
J'ai toujours du mal à choisir entre = et ==.
En tout merci ! Ça fonctionne !
0