Problème de rafraichissement d'une liste déroulante

Problème de rafraichissement d'une liste déroulante - HTML/CSS - Programmation

Marsh Posté le 08-07-2006 à 17:48:44    

Hello à tous.
Premier post ici en espérant y trouver une réponse. Voilà, je viens de me faire un formulaire d'envoie de mail sur une feuille PHP. La composition et l'envoi de mail marche bien  pas de soucis. Je voudrai juste ajouter un peu de souplesse et faire en sorte que la liste déroulante ou l'on peut choisir le destinataire se mette à jour suivant un argument passé dans l'URL.
 
En étant bref :
 
Lorsque l'url est : http://[xxx]/mailme.php?contact=JB
La liste déroulante se positionne sur JB
 
Lorsque l'url est : http://[xxx]/mailme.php?contact=Webmaster
La liste déroulante se positionne sur Webmaster
 
Tout cela marche bien sous IE mais pas sur Firefox.
Si quelqu'un a une idée je suis largement preneur.
 
 
 
Voici mon code :
 

Code :
  1. <html>
  2. <head>
  3. <title>Document sans titre</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <script language="JavaScript" type="text/JavaScript">
  6. function JBSelectContact(name) {
  7. var obj=document.getElementById("dest" );
  8. if (obj)
  9.  obj.value=name;
  10. }
  11. </script>
  12. </head>
  13. <?
  14. //Test is the variable contact is set
  15. if (!isset($contact))
  16. {
  17. $contact="Webmaster";
  18. }
  19. ?>
  20. <body bgcolor="#000000" text="#FFFFFF" onload= <? echo "JBSelectContact('". $contact ."')" ?> >
  21. <div align="center">
  22.   <h1>Contact </h1>
  23.   <p>&nbsp;</p>
  24.   <p align="center">Merci de bien vouloir utiliser le formulaire ci-dessous pour
  25.     nous contacter. Votre message sera aiguill&eacute; vers la bonne personne
  26.     qui vous r&eacute;pondra dans les plus bref d&eacute;lais.</p>
  27.   <p align="left">&nbsp;</p>
  28.   <form name="form1" method="post" action="envoi.php">
  29.     <p>&nbsp;</p>
  30.     <table width="90%" border="0">
  31.       <tr>
  32.         <td width="150" nowrap>Votre Adresse eMail :</td>
  33.         <td> <input name="emit" type="text" size="50"></td>
  34.       </tr>
  35.       <tr>
  36.         <td width="150" nowrap>Destinataire :</td>
  37.         <td><select name="dest">
  38.             <option value='Webmaster'>Webmaster</option>
  39.             <option value='JB'>JB</option>
  40.           </select>
  41.         </td>
  42.       </tr>
  43.       <tr>
  44.         <td width="150" nowrap>Sujet :</td>
  45.         <td> <input name="subject" type="text" size="100"></td>
  46.       </tr>
  47.       <tr>
  48.         <td width="150" nowrap>
  49.           <label>Votre message :</label> </td>
  50.         <td><textarea name="text" cols="100" rows="10"></textarea></td>
  51.       </tr>
  52.       <tr>
  53.         <td width="150" nowrap>&nbsp;</td>
  54.         <td><div align="center">
  55.             <input type="submit" name="Submit" value="Envoyer">
  56.             <input name="Cancel" type="reset" id="Cancel2" value="Annuler">
  57.           </div></td>
  58.       </tr>
  59.     </table>
  60.     <p>
  61.       <label> </label>
  62.     </p>
  63.   </form>
  64.   <p>&nbsp;</p>
  65. </div>
  66. </body>
  67. </html>


 

Reply

Marsh Posté le 08-07-2006 à 17:48:44   

Reply

Marsh Posté le 10-07-2006 à 09:59:37    

Personne pour me proposer une idée ????
:'(

Reply

Marsh Posté le 10-07-2006 à 10:04:07    

si :o
Tu ne "dois" pas pouvoir changer directement la value d'un select sous FF ( je suppose j'ai pas vérifié hein!).
Du coup tu vas être obligé de boucler sur toutes les options de ton select et de mettre selected à celle dont la valeur correspond.

Reply

Marsh Posté le 10-07-2006 à 10:18:22    

Déjà, moi je vois deux trucs :
 
1/ le premier, c'est que ça me semble un peu chelou comme t'as voulu faire, à mélanger du PHP et du JS
2/ tu peux le faire 100% en JS, ou 100% en PHP. Etant donné que le support du PHP est garanti mais pas celui du JS, la question ne se pose pas.
 
Tu fais donc :
 

Code :
  1. <td><select name="dest">
  2.   <option value='Webmaster'<?("Webmaster" == $contact)?echo(" selected=\"selected\"" );?>Webmaster</option>
  3.   <option value='JB'<?("JB" == $contact)?echo(" selected=\"selected\"" );?>>JB</option>
  4. </select></td>


 
et tu vires tout le reste
 
ps: chuis pas sûr de la syntaxe, chuis une quille en php

Reply

Marsh Posté le 10-07-2006 à 10:24:35    

ah, en plus je vois ce que t'as voulu faire... spa glorieux comme truc :o, et en effet, seul IE autorise de modifier l'attribut "value" d'un objet select. il faut passer par les options, et sélectionner celle que tu veux ;)
 
La version 100% JavaScript aussi :
 

Code :
  1. function Contact()
  2. {
  3.     if (window.location.href.indexOf("?" ) > -1)
  4.     {
  5.         var contactVal = "";
  6.         var params = window.location.href.substr(window.location.href.indexOf("?" ) + 1).split("&" );
  7.         for (var i = 0; i < params.length; i++)
  8.         {
  9.             if (params[i].split("=" )[0] == "contact" )
  10.             {
  11.                 contactVal = params[i].split("=" )[1];
  12.                 break;
  13.             }
  14.         }
  15.         if (contactVal.length > 0)
  16.         {
  17.             for (var i = 0; i < document.getElementById("contactSelect" ).options.length; i++)
  18.             {
  19.                 if (document.getElementById("contactSelect" ).options[i].value > contactVal)
  20.                 {
  21.                     document.getElementById("contactSelect" ).options[i].selected = true;
  22.                     break;
  23.                 }
  24.             }
  25.         }
  26.     }
  27. }
  28. document.onload = Contact;


 
Tu vires toute trace de PHP et des JS dans ta page, et ça marche, à condition de recevoir en URL un paramètre nommé "contact" et que ton select ait pour id "contactSelect"

Message cité 1 fois
Message édité par Arjuna le 10-07-2006 à 10:31:01
Reply

Marsh Posté le 10-07-2006 à 10:38:41    

LOL ... merci pour les soluces :)
J'ai pris la version PHP ;)
 
Et désolé de faire des trucs pas glorieux du tout mdr ... j'ai totalement lâche le dev web depuis des lustres et je rame pour m'y remettre !
 
Merci en tout cas ;)
 
JB

Reply

Marsh Posté le 10-07-2006 à 10:41:33    

anapajari a écrit :

si :o
Tu ne "dois" pas pouvoir changer directement la value d'un select sous FF.
Du coup tu vas être obligé de boucler sur toutes les options de ton select et de mettre selected à celle dont la valeur correspond.


Arjuna a écrit :

ah, en plus je vois ce que t'as voulu faire... spa glorieux comme truc :o, et en effet, seul IE autorise de modifier l'attribut "value" d'un objet select. il faut passer par les options, et sélectionner celle que tu veux ;)


 
Y'a de l'echo :o :o :o
Et je comprends pas une ligne dans ton truc:

Arjuna a écrit :


Code :
  1. if (document.getElementById("contactSelect" ).options[i].value > contactVal)



== plutot que > non?


Message édité par anapajari le 10-07-2006 à 10:41:55
Reply

Marsh Posté le 10-07-2006 à 10:43:59    

Yes, c'est == :)
 
C'est normal aussi, je suis reparti d'un autre script que j'ai écrit pour faire qqchose d'autre. Pis la zone de "Réponse rapide", elle est pas top pour corriger du code :p
 

Code :
  1. // This file add the "debug" directive to all links on the page if it is set on the current url
  2. // In other words, it extends the debug feature to the whole site
  3. function UpdateLinksWithDebugFlag()
  4. {
  5.     if (window.location.href.indexOf("?" ) > -1)
  6.     {
  7.         var debugEnabled = false;
  8.         var params = window.location.href.substr(window.location.href.indexOf("?" ) + 1).split("&" );
  9.         for (var i = 0; i < params.length; i++)
  10.         {
  11.             if (params[i] == "debug=1" )
  12.             {
  13.                 debugEnabled = true;
  14.                 break;
  15.             }
  16.         }
  17.         if (debugEnabled)
  18.         {
  19.             for (var i = 0; i < document.links.length; i++)
  20.             {
  21.                 if (document.links[i].href.indexOf("?" ) > -1)
  22.                 {
  23.                     document.links[i].href += "&debug=1";
  24.                 }
  25.                 else
  26.                 {
  27.                     document.links[i].href += "?debug=1";
  28.                 }
  29.             }
  30.             for (var i = 0; i < document.forms.length; i++)
  31.             {
  32.                 if (document.forms[i].action.indexOf("?" ) > -1)
  33.                 {
  34.                     document.forms[i].action += "&debug=1";
  35.                 }
  36.                 else
  37.                 {
  38.                     document.forms[i].action += "?debug=1";
  39.                 }
  40.             }
  41.         }
  42.     }
  43. }
  44. window.onload = UpdateLinksWithDebugFlag;


Reply

Sujets relatifs:

Leave a Replay

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