SELFHTML

Forum SELFHTML: Archives:
fonction OnSubmit()

Page d'information: vue d'ensemble
vers le bas 

(JAVASCRIPT) fonction OnSubmit()

Le message suivant est de: David, Adresse électronique DavidB863917134@aol.com, 12. 08. 2003, 13:44

Bonjour tout le monde!  c'est encore moi.

Alors voilà le nouveau petit probleme que je vais vous soumettre (aiguissez bien votre sagacité!): J'ai un petit formulaire (je vous en ai déjà parlé) qui était traité par un script Perl. En voici un extrait:
<form name="formu" action="/cgi-bin/mailer.pl" method="post" onSubmit="return verif_champs()">
<input type="text" name="SUJET" size="20" maxlength="20">
<textarea name="TEXTE" cols="50" rows="5"></textarea>
<input name="envoie" type="submit" value="Envoyer">
</form>
et voici le code javascript associe:
function verif_champs()
{
 if(document.formu.SUJET.value == "")  {
   alert("Veuillez precisez un Sujet SVP!");
   document.formu.SUJET.focus();
   return false;
  }
 if(document.formu.TEXTE.value == "")  {
   alert("Veuillez nous ecrire un Texte SVP!");
   document.formu.TEXTE.focus();
   return false;
  }
}
Ca marchait tres bien, lors du click javascript verifiait que les champs n'etait pas vide et il autorisait alors l'envoie du formulaire à mailer.pl
Seulement  voilà, pour des raisons pratiques et de securités, je suis passé à la base de données MySQL et à PHP. Maintenant les champs de mon formulaire sont recuperés par MySQL, j'ai du modifie la balise form comme ceci:
<form method="post" name="formu" action="<?php echo $editFormAction; ?>">
PHP n'etant pas un script CGI la fonction OnSubmit ne fonctionne plus! (et c'est normal d'ailleurs)

Alors comment faire pour que les champs soit vérifié avant l'envoie sans utiliser OnSubmit? tout en gardant mon .php (en voila une question qu'elle est bonne)

Merci de votre attention, @+!

David.


 
vers le hautvers le bas 

(JAVASCRIPT) fonction OnSubmit()

Le message suivant est de: Patrick Andrieu, Adresse électronique nospam@nospam.fr, 13. 08. 2003, 09:20
http://www.selfhtml.com.fr/equipe/patrick.htm

»» Bonjour tout le monde!  c'est encore moi.
Et bien re, toi!

»» Ca marchait tres bien, lors du click javascript verifiait que les champs n'etait pas vide et il autorisait alors l'envoie du formulaire à mailer.pl
»» Seulement  voilà, pour des raisons pratiques et de securités, je suis passé à la base de données MySQL et à PHP. Maintenant les champs de mon formulaire sont recuperés par MySQL, j'ai du modifie la balise form comme ceci:
»» <form method="post" name="formu" action="<?php echo $editFormAction; ?>">
»» PHP n'etant pas un script CGI la fonction OnSubmit ne fonctionne plus! (et c'est normal d'ailleurs)

Hmm... ceci me paraît bien bizarre. Je ne connais nullement PHP, mais je ne saisis pas en quoi le fait de changer le mode d'action du formulaire ait une influence sur JavaScript et soit en mesure de déactiver (si j'ai bien compris) le gestionnaire d'évènement onSubmit (petite rectification terminologique au passage que tu as remarquée j'espère *g*)...

Désolé de ne pouvoir t'aider, mais attendons un peu que qqn de plus compétent passe par là, sinon je poserai la question pour toi dans le forum allemand. Si entre-temps, tu trouves une solution, ou du moins une explication à ce fonctionnement, n'hésite pas à nous en faire part! Merci!

Patrick


 
vers le hautvers le bas 

(JAVASCRIPT) fonction OnSubmit()

Le message suivant est de: David, Adresse électronique DavidB863917134@aol.com, 13. 08. 2003, 11:03

Ca y est j'ai trouve! (applaudissement: clap clap!!).
La faute ne venait pas du gestionnaire d'evenements onSubmit ni de PHP mais de javascript, comme jai une routine qui tourne sur qq pages (dont contact.php) j'ai fait un fichier en .js et au besoin j'y fais appel avec <script type="text/JavaScript" src="maroutine.js">. Hors ma fonction verif_champs etait placée entre <script...src="maroutine.js"> et </script>. Je l'ai deplacer dans maroutine.js, et maintenant ca marche!
voila note pour les programmateurs: qd vous faites appel a une source pour javascript mettez y tout votre code. Ou peut etre en ouvrant une deuxieme balise <script...> ? faudrait que j'essaie tiens!

@+
David.


 
vers le hautvers le bas 

(JAVASCRIPT) fonction OnSubmit()

Le message suivant est de: David, Adresse électronique DavidB863917134@aol.com, 13. 08. 2003, 11:13

c'est bon, en ouvrant une deuxieme balise <script> ca marche aussi!
donc ca deviens:
<script type="text/JavaScript" src="maroutine.js">
</script>
<script type="text/JavaScript">
function verif_champs()
{
 ....
}
</script>
et dans le formulaire:
<form method="post" name="formu" action="<?php echo $editFormAction; ?>" onSubmit="return verif_champs()">
Par contre je ne sais pas si c'est tres "propre" d'ouvrir 2 balises <script> quelqu'un le sait?

David.


 
vers le hautvers le bas 

(JAVASCRIPT) fonction OnSubmit()

Le message suivant est de: Patrick Andrieu, Adresse électronique nospam@nospam.fr, 13. 08. 2003, 11:53

Rere toi!



»» <script type="text/JavaScript" src="maroutine.js">. Hors ma fonction verif_champs etait placée entre <script...src="maroutine.js"> et </script>.


Si tu fais appel à un fichier externe, tu ne dois rien placer entre la balise d'ouverture et de fermeture, donc uniquement de la sorte:

<script type="text/javascript" src="tonscript.js"></script>

Mais tu peux ouvrir autant de balises <script> que tu veux ainsi qu'appeler autant de scripts externes que tu veux!

<script type="text/javascript" src="tonspremiercript.js"></script>
<script type="text/javascript" src="tonsecondscript.js"></script>
<script type="text/javascript">
<!--
function machintruc() {
 commande.blafoo;
}
//-->
</script>

Tu peux aussi placer ta fonction verif_champs dans ton script externe ou dans _un autre_ script externe, si tu dois y recourir depuis d'autres pages de ton site!

Tu peux ouvrir des balises <script> même dans le body, il y même certains cas où il faut le faire. Notamment pour vérifier document.body.clientHeight/Width, qui ne sont disponibles que lorsque le "body" existe. Donc, si tu demandes document.body.clientHeight dans l'entête de ton ficher HTML, tu auras une erreur (IE):

Exemple:
<body onLoad="unefonction();">
<script type="text/javascript">
<!--
 /*Centrer: Initialiser le Resize-Control pour MSIE*/
 if(!window.af && document.body && document.body.clientWidth) {
   window.onresize = hide;
   af = aussenweite();
  }
//-->
</script>
.
.
.
 reste du fichier HTML
.
</body>

Tu peux aussi faire appel au milieu du texte HTML à des fonctions JavaScript définies soit dans le Header soit dans un fichier externe. Très utilisé souvent avec document.write/eln .

Patrick


 
vers le haut

© 1998-2004 Adresse électronique selfhtml@fr.selfhtml.org