[Résolu] Formulaire à submit multiple

Formulaire à submit multiple [Résolu] - HTML/CSS - Programmation

Marsh Posté le 04-06-2007 à 11:11:27    

Bonjour à tous,
 
j'ai un petit soucis de compatibilité avec IE sur une fonction en JS :  
j'ai un formulaire avec deux boutons submit, et l'idée est de changer le form.action selon le bouton choisi (je sais, c'est pas optimal pour ceux qui ont desactivé le JS mais ce ne sont pas mes choix de prog)
 
sous FF ce code marche :

Code :
  1. var form=this.form;
  2. form.setAttribute('action', 'inscription_new.php');


 
mais impossible de le faire fonctionner sous ie... j'ai essayé  

Code :
  1. document.formulaire.action='inscription_new.php';


 
qui ne marche pas plus, qqn à une idée ? (à part recoder le form pour que ce soit la page appelée par le form qui fasse le tri?
 
Merci!


Message édité par HuGoBioS le 04-06-2007 à 12:46:18

---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 11:11:27   

Reply

Marsh Posté le 04-06-2007 à 11:13:30    

document.getElementByID('iddetonform').action ?

Message cité 1 fois
Message édité par Decapfour le 04-06-2007 à 11:13:39
Reply

Marsh Posté le 04-06-2007 à 11:20:21    

Decapfour a écrit :

document.getElementByID('iddetonform').action ?


marche pas non plus :/


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 11:36:04    

document.forms['nomdetonform'].action=?
 
http://forum.alsacreations.com/top [...] ction.html
Si ca peut te servir


Message édité par Decapfour le 04-06-2007 à 11:37:03
Reply

Marsh Posté le 04-06-2007 à 11:42:05    

Pas mieux :/
 
j'ai peut être plus les yeux en face des trous :
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <title>manifestations</title>
  5. <link href="/style/css.css" rel="stylesheet" type="text/css" >
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
  7. <!--une fonction de verification -->
  8. <script type="text/javascript">
  9. <!--
  10. function verif_formulaire()
  11. {
  12. //ca ca marche on s'en tape
  13. }
  14. //-->
  15. //ca ca marche sous FF, pas sous ie :/
  16. function cheque(formu)
  17. {
  18. var form=formu;
  19. document.formulaire.action='inscription_new.php';
  20. document.getElementByID('formulaire').action = 'inscription_new.php';
  21. document.forms['formulaire'].action = 'inscription_new.php';
  22. form.action='inscription_new.php';
  23. form.setAttribute('action', 'inscription_new.php');
  24. }
  25. function cb(formu)
  26. {
  27. var form=formu;
  28. document.formulaire.action='https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01';
  29. document.getElementByID('formulaire').action = 'https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01';
  30. document.forms['formulaire'].action = 'https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01';
  31. form.action='https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01';
  32. form.setAttribute('action', 'https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01');
  33. }
  34. </script>
  35. <script type="text/javascript">
  36. <!--
  37. //calcul du montant.
  38. function test_champ(champ) {
  39. //on s'en tape ca marche
  40. }
  41.   -->
  42. </script>
  43. </head>
  44. <body>
  45. <form name="formulaire" id="formulaire" onsubmit="return verif_formulaire();" method="post" action="">
  46. // j'ai un peu élagué
  47. <input type="hidden" name="action" value="submitted">
  48. <input type="submit" value="Je m'inscris et je paye par chèque" onclick="cheque(this.form);"  name="B1">
  49. <input type="submit" value="Je m'inscris et je paye par CB" onclick="cb(this.form);"name="B2"></div>
  50. </form>
  51. </body>
  52. </html>


 
j'ai loupé qqch ? :(


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 11:47:12    

Fait un alert(document.getElementById('formulaire'));
Si ca te donne [object] c'est qu'il a trouvé la balise formulaire et après c'est qu'une question d'attribut.

Reply

Marsh Posté le 04-06-2007 à 11:58:23    

ca me donne effectivement object...
j'ai demandé un alert de document.getElementById('formulaire').action ca me donne object aussi
par contre document.getElementById('formulaire').action.value ca me donne "submitted"
 
[:alex666]


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 12:09:20    

.action.value ou .action.text essaye

Reply

Marsh Posté le 04-06-2007 à 12:14:03    

Decapfour a écrit :

.action.value ou .action.text essaye


j'ai tenté le .value, j'ai pas pensé au .text essayons :d


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 12:17:29    

marche pas...

 

d'après le DOM Inspector de FF, c'est bien action le nodeName adéquat... je hais le JS :fou:


Message édité par HuGoBioS le 04-06-2007 à 12:17:45

---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 12:17:29   

Reply

Marsh Posté le 04-06-2007 à 12:31:13    

le input name="action" n'a rien n'a foutre là car il interfère avec l'attribut "action" du form.
 
renomme ton input et basta.
 
Accessoirement ton code devrais ressembler à ça :  

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2.     <html>
  3.     <head>
  4.     <title>manifestations</title>
  5.     <link href="/style/css.css" rel="stylesheet" type="text/css" >
  6.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
  7.     <!--une fonction de verification -->
  8.     <script type="text/javascript">
  9.    
  10.     function goMyForm(elm, value) {
  11.  var arrLink = { cheque : 'inscription_new.php', cb:'https://ecom.cimetz.com/telepaie/cgishell.exe/epaie01'};
  12.  with(elm) {
  13.   form.action = arrLink[value];
  14.   form.submit();
  15.  }
  16.     }
  17.    
  18.     </script>
  19.    
  20.     </head>
  21.     <body>
  22.     <form name="formulaire" id="formulaire" onsubmit="return verif_formulaire();" method="post" action="">
  23.    
  24.         <input type="hidden" name="autreaction" value="submitted">
  25.         <input type="submit" value="Je m'inscris et je paye par chèque" onclick="goForm(this, 'cheque');"  name="B1">
  26.         <input type="submit" value="Je m'inscris et je paye par CB" onclick="goForm(this, 'cb');"name="B2"></div>
  27.         </form>
  28.     </body>
  29.     </html>

Reply

Marsh Posté le 04-06-2007 à 12:46:07    

Bien, vu, le pb était du au champ hidden appelé "action", maintenant ca marche, mais avec les fonctions cb() et cheque()
 
la goForm(,) cause un pb dans ie...
 
Merci à vous!


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 12:48:33    

goForm(this, 'cheque'); <== regarde bien le nom de ma fonction je l'ai appelée goMyForm au lieu de goForm.
 
Faudrait faire un effort et lire le code qu'on te fourni

Reply

Marsh Posté le 04-06-2007 à 12:54:10    

gatsu35 a écrit :

goForm(this, 'cheque'); <== regarde bien le nom de ma fonction je l'ai appelée goMyForm au lieu de goForm.
 
Faudrait faire un effort et lire le code qu'on te fourni


j'ai passé 3h sur cette connerie, desolé de plus être aussi attentif qu'au début :o


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 12:59:35    

C'est extrêmement pas bien de gérer un submit avec du JavaScript :o Accessibilité, etc.

 

Le mieux (sachant qu'on peux pas utiliser un <button> à cause de IE), en regest de mettre un name sur les deux submit :

Code :
  1. <input type="submit" name="action" value="Envoyer 1" />
  2. <input type="submit" name="action" value="Envoyer 2" />


Et de tester server-side quel bouton à été cliqué, genre :

 
Code :
  1. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  2.  
  3.  if(isset($_POST['action'])) {
  4.  
  5.     if($_POST['action'] == 'Envoyer 1') {
  6.  
  7.        require 'inscription_new.php';
  8.  
  9.     } else {
  10.  
  11.        require 'pouet.php';
  12.     }
  13.  }
  14. }

Message cité 1 fois
Message édité par FlorentG le 04-06-2007 à 12:59:54
Reply

Marsh Posté le 04-06-2007 à 13:04:32    

Tiens d'ailleurs je remarque aussi que tes deux submit servent à choisir le moyen de règlement.
 
Dans ce cas là, pour un soucis d'usabilité, il vaudrait mieux proposer deux boutons radios, l'internaute choisirait son moyen de paiement ainsi. Ensuite après envoi du formulaire, une redirection côté serveur permettera de l'envoyer sur la bonne page.
 
On mettera comme valeur par défaut le moyen de paiement le plus utilisé. L'objectif étant que l'inscription soit la plus rapide. On évite aussi les possibles erreurs, à tous les coups y'a des mecs qui vont cliqué sur le premier bouton rencontré sans regarder l'intitulé.

Reply

Marsh Posté le 04-06-2007 à 13:24:53    

FlorentG a écrit :

C'est extrêmement pas bien de gérer un submit avec du JavaScript :o Accessibilité, etc.
 
Le mieux (sachant qu'on peux pas utiliser un <button> à cause de IE), en regest de mettre un name sur les deux submit :

Code :
  1. <input type="submit" name="action" value="Envoyer 1" />
  2. <input type="submit" name="action" value="Envoyer 2" />


Et de tester server-side quel bouton à été cliqué, genre :
 

Code :
  1. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  2.  
  3.  if(isset($_POST['action'])) {
  4.  
  5.     if($_POST['action'] == 'Envoyer 1') {
  6.  
  7.        require 'inscription_new.php';
  8.  
  9.     } else {
  10.  
  11.        require 'pouet.php';
  12.     }
  13.  }
  14. }



 

FlorentG a écrit :

Tiens d'ailleurs je remarque aussi que tes deux submit servent à choisir le moyen de règlement.
 
Dans ce cas là, pour un soucis d'usabilité, il vaudrait mieux proposer deux boutons radios, l'internaute choisirait son moyen de paiement ainsi. Ensuite après envoi du formulaire, une redirection côté serveur permettera de l'envoyer sur la bonne page.
 
On mettera comme valeur par défaut le moyen de paiement le plus utilisé. L'objectif étant que l'inscription soit la plus rapide. On évite aussi les possibles erreurs, à tous les coups y'a des mecs qui vont cliqué sur le premier bouton rencontré sans regarder l'intitulé.


je sais bien, mais c'est pas moi qui ai bâti le cahier des charges ... [:spamafote]
 
perso j'aurai traité ca par le serv, je HAIS le javascript, donc moins j'en fais mieux je me porte ;)  
toutes les inscriptions sont re confirmées après par un être humain, ca devrait pas trop être gênant...


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 13:27:08    

Casse les jambes à celui qui à fait le cahier des charges :D Vu qu'il y a du pognon en jeu, l'accessibilité et l'usabilité devraient êtres prioritaires...

Reply

Marsh Posté le 04-06-2007 à 14:06:19    

FlorentG a écrit :

Casse les jambes à celui qui à fait le cahier des charges :D Vu qu'il y a du pognon en jeu, l'accessibilité et l'usabilité devraient êtres prioritaires...


[:matleflou]  
 
c'est faible comme sommes, c'est pour des conférences, ca dépassera jamais les 10€ :o
 
ps: je te défie de faire entendre raison à un ingé borné de plus de 60ans [:cupra]


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 04-06-2007 à 14:25:48    

HuGoBioS a écrit :

je sais bien, mais c'est pas moi qui ai bâti le cahier des charges ... [:spamafote]
 
perso j'aurai traité ca par le serv, je HAIS le javascript, donc moins j'en fais mieux je me porte ;)  
toutes les inscriptions sont re confirmées après par un être humain, ca devrait pas trop être gênant...


Le javascript c'est bien, c'est le bonheur quand on associe HTML propre et semantique, CSS et JS non obstrusif

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed