Aide - Recherche - Membres - Calendrier
Version complète : Problème d'appel d'un javascript dans un formulaire
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Javascript et AJAX
angus59+
Bonjour tout le monde

Bon voila, dans mon en tête html j'ai déclaré une fonction pour vérifier que les champs d'un formulaire sont bien remplis et je l'appel ainsi dans ma page :

HTML
<form method="post" action="./envoi_mail.php" name="form" onSubmit="validation_champs();">


Le truc classique quoi ^^
Le problème c'est que quand je clique sur le bouton d'envoi, il ne me "déclenche" pas la fonction de validation mais va directement sur le document passé en paramètre action !

Comment ça se fait ?
Aurais-je oublié un truc dans l'histoire ?

Petit aperçu de mon code js :

HTML
&lt;script type='text/javascript'>
if (là j'effectue tous les tests concernant les champs)
{
...
} else { //si pas de probleme, on autorise le "lancement" du script de gestion de l'envoi
document.form.submit();
}
</script>

Voila, c'est surement la dernière ligne qui pose problème (il y a un paramètre à passer dans le submit() ? )

Eventuellement si ça peut aider, lien vers le formulaire ici

Merci d'avance pour l'aide que vous pourrez m'apporter !
tazo
Bonsoir,

La méthode JS appelée dans le "onsubmit" doit retourner une valeur ("true" pour envoyer le formulaire, "false" pour annuler l'envoi) :

HTML
<form method="post" action="./envoi_mail.php" name="form" onsubmit="return validation_champs();">

HTML
<script type='text/javascript'>
function validation_champs() {

tests = ......

if (!tests) {
return false;
} else { //si pas de problème, on autorise le "lancement" du script de gestion de l'envoi
return true;
}

}
</script>


Bon courage !
angus59+
Ah ok merci smile.gif

Bon j'ai 2 ou 3 petites modifications à apporter à mon script mais je tiens au courant smile.gif
angus59+
bon bah malgré la modification apportée ça fonctionne toujours pas :x

bon je vais poster la fonction complète, y'a ptêtre une erreur dans l'accès aux données du formulaire je pense que ma fonction renvoi systématiquement true donc le formulaire effectue l'action !

HTML
function validation_champs()
{
var res;
var surname = document.form.prenom.value;
var name = document.form.nom.value;
var mail = document.form.email.value;
var destinataire = document.form.destinataire.value;
var message = document.form.message.value;
//On contrôle que les champs ne sont pas vides
if (surname == "") {
alert('Veuillez indiquer votre prénom';
res = false;
}
if (name == "") {
alert('Veuillez indiquer votre nom de famille');
res = false;
}
if (mail== "") {
alert('Veuillez indiquer votre adresse E-mail');
res = false;
}
if (destinataire =="") {
alert('Veuillez choisir un destinataire');
res = false;
}
if (message == "") {
alert('Merci d\'écrire votre message');
res = false;
}
if (!valide_mail()) {
alert('Votre adresse E-Mail semble incorrecte !\nMerci de la vérifier');
res = false;
}
if (!res) {
return false;
} else {
return true;
}
}
</script>


merci d'avance
tazo
HTML
alert('Veuillez indiquer votre prénom');


Il manque une fin de parenthèse.

De plus, je te conseille de nommer ton formulaire "form_msg" ou "form_message" par exemple, histoire que ce soit plus lisible.

Dernier conseil, une petite optimisation :

HTML
{
var res = true;
...
return res;
}
angus59+
Ah oui pas vu la parenthèse !

merci pour les conseils ! (surtout celui d'optimisation, j'en ai bien besoin de ça x) )
angus59+
bon ca marche toujours pas xD mais je viens de penser, faut faire un contrôle de ma variable res dans mon php ?

pouah comment je suis en gallère moi, pour un truc bidon en plus je suis sûr !
tazo
Je regardais ta page sur ton site, tu as 2 fois les balises <html> et <head> dans ton code, ça peux poser des problèmes :
HTML
...
<body onContextMenu="return clic_droit();">
<table>
<!-- EN-TETE (LIENS) -->
<!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>
<meta http-equiv="Content-Type" content="text/html; charset= utf-8" />
<title>Document sans titre</title>
<style type="text/css">
...


Edit : même 3 fois
angus59+
oui c'est parce que j'ai externalisé l'en-tête et le pied de page mais j'ai pas pensé d'enlever les balises comme un ***

j'ai changé ça ^^'

par contre je pense pas que ce soit ça qui fasse que ça ne fonctionne pas, enfin, ça peut jouer selon toi ?

edit : modification en ligne
tazo
Erreur :
HTML
var name = document.form.nom_contact.value;
angus59+
Ayé ça marche !! merci tazo smile.gif

bon va falloir que je pense à me relire un peu mieux à l'avenir ça évitera des erreurs un peu bêtes ^^

mais au moins j'ai appris ça =D

merci beaucoup en tous cas ! (je pense que je vais pas tarder à revenir XD )
tazo
De rien !

Il te manquera juste le "return res;" à la place de "res;" et ça sera Ok icon_wink.gif
angus59+
oui je l'ai modifié en me rendant compte qu'il me redirigeait encore ^^'
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.