Nouvelle page après validation d'un formulaire

cs_nicopico Messages postés 4 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juin 2004 - 10 mars 2003 à 00:37
SnowAngeL Messages postés 8 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 27 juillet 2004 - 9 juin 2004 à 10:26
Bonjour,

J'ai créé un formulaire (avec un mailto) qui contient un bonton de validation sur lequel je vérifie les différents champs sur l'évènement "onClick".
Lorsque tous les champs sont corrects et que l'utilisateur l'envoie, j'aimerais recharger la même page mais avec les champs vide et un message de remerciements...
J'ai essayé différentes choses mais rien ne fonctionne... Le formulaire est bien envoyé mais la page reste affichée avec toutes les informations...
Quelqu'un a t-il une solution?

Merci d'avance pour votre aide...

6 réponses

cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
10 mars 2003 à 21:45
Il suffit de mettre ce que tu veux faire dans l'évènement onSubmit

Regarde là-dessus:
http://www.javascriptfr.com/article.aspx?Val=176

Dean
http://kickme.to/charloweb
0
cs_nicopico Messages postés 4 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juin 2004
11 mars 2003 à 15:04
Merci pour ta réponse mais cela ne fonctionne pas...
En fait au lieu de recharger la même page après la validation du formulaire, j'ai décidé de renvoyer à la page d'accueil (ce qui revient un peu près au même).
Donc, si je met le onSubmit sur le formulaire, il m'envoie effectivement à la page d'accueil mais n'envoie pas le formulaire.
Si je met le onSubmit sur le bouton envoyer, il envoie le formulaire mais ne va pas sur la page d'accueil...
????
0
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
11 mars 2003 à 21:00
Essaie un truc comme ça:

<script language="JavaScript">
function sendandredirect() {
document.xxx.submit();
location.href = 'home.htm';
}
</script>

<form name="xxx" action="mailto:user@domain.com">

</form>

J'ai pas testé mais j'espère que ça t'avancera...

Dean
http://kickme.to/charloweb
0
cs_nicopico Messages postés 4 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 2 juin 2004
12 mars 2003 à 02:26
Salut Dean,

Merci beaucoup pour ton aide mais... cela ne fonctionne pas.
Tu trouveras ci-joint un lien où se trouve mon formulaire...
Peut-être que quelque chose rentre en conflit...
http://membres.lycos.fr/ladypixel/formulaire.html

Merci encore
0

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

Posez votre question
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
12 mars 2003 à 16:30
Ce n'est pas dans mes habitudes d'analyser des sources complètes mais bon pour cette fois... :

- le nom du formulaire n'est pas bon ('/' non autorisé);
- je me suis trompé dans la fonction sendandredirect() : il faut remplacer document.monform.submit() par document.forms[0].submit();

Peut-être y a-t-il d'autres bugs... En tout cas j'ai légèrement modifié ton script et ça marche. Inspire-toi de cette source:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function MM_findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') {
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors); document.MM_returnValue (errors '');
}
function sendandredirect() {
document.forms[0].submit();
location.href = 'http://kickme.to/charloweb';
}

//-->
</script>
</head>

<form method="post" action="mailto:charloweb@hotmail.com" "name="deviscatalogue" enctype="text/plain">
<table width="760" border="0" cellspacing="0" cellpadding="0">
----,
<table width=\"700\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\">
----

,
Demande de catalogue / devis

Merci de compléter ce formulaire pour
soumettre votre demande.

(*)
à compléter obligatoirement,

----

,
,
,

----

,
Société,

*,

----

,
Adresse,

*,

----

,
Code postal,

*,

----

,
Ville,

*,

----

,
Pays,
,

----

,
Activité,
,

----

,
Nom,

*,

----

,
Prénom,

*,

----

,
Fonction,

*,

----

,
Téléphone,

*,

----

,
Fax,

*,

----

,
E-mail,

*,

----

,
Votre demande,
<select name="Demande" size="1">
<option>Demande de devis</option>
<option>Catalogue</option>
<option>Autre</option>
</select>,

----

,
Comment nous avez-vous connus?,
<textarea name="Connu" cols="50" rows="5"></textarea>,

----

,
Effectif de votre société,
<select name="Effectif" size="1">
<option selected>Effectif de votre société</option>
<option>-10</option>
<option>10 à 50</option>
<option>50 à 100</option>
<option>+100</option>
</select>,

----

,
Laisser un message,
<textarea name="Message" cols="50" rows="5"></textarea>

</td>
</tr>
<tr>
<td>


</td>
</tr>
</table>


</form>
</td>
</tr>
</table>

</html>

</xmp></noscript><script language="javascript" src="http://ads.multimania.lycos.fr/ad/test_frame_size.js"></script>
<script language="javascript">
if (!AD_clientWindowSize()) {
document.write("<NOSC"+"RIPT>");
}
</script>

<script type="text/javascript" src="http://ads.multimania.lycos.fr/ad/ad.php?cat=noref&mkw=&CC=fr&ord=3e6f4ad3&adpref="></script>

Bon il reste un problème c'est qu'on ne sait pas si le formulaire a bien été envoyé (la redirection s'effectue quand même). Il doit exister des fonctions de tests en JS...

De plus, envoyer un formulaire avec mailto n'est pas conseillé. Il vaut mieux utiliser un script serveur qui s'occupe de l'envoi.

@+

Dean
http://kickme.to/charloweb
0
SnowAngeL Messages postés 8 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 27 juillet 2004
9 juin 2004 à 10:26
Pour moi tu as juste a mettre a la fin de ta page qui traite les données ce script o_O

<script>
document.href = "index.htm" ;
</script>
0
Rejoignez-nous