montrer/cacher div a partir d'un <select><option>

montrer/cacher div a partir d'un <select><option> - HTML/CSS - Programmation

Marsh Posté le 09-09-2008 à 15:33:44    

Bonjour,  
j'ai cherche partout comment afficher/masquer une DIV en CSS et avec une fonction javascript, dans un <select>,
les solutions trouvees dans les forums et tutos sont a peu pres les memes partout (j'en ai teste plusieurs).
pour des balises en ligne, pas de probleme avec Firefox et IE, cela fonctionne.
cela fonctionne meme avec un des boutons radio
Or ce que je souhaite c'est choisir a partir d'un menu deroulant, donc d'un <select>.
selon le village que je choisis dans la liste deroulante, il s'affiche une Div mentionnant quelle ecole choisir (sur laquelle il y aura un lien)
 
Mon probleme : le code si dessous marche parfaitement sour Firefox et impossible sous IE.
j'ai l'impression a force de chercher de passer a cote de quelque chose d'evident :
voici le code :

Code :
  1. <style>
  2. #village-A,#village-B {
  3. position:absolute;
  4. visibility:hidden;
  5. }
  6. </style>
  7. <!-- fonction essayee initialement puis abandonnée pour celle qui suit mais memes resultats dans IE : ne fonctionne pas ! -->
  8. <script type="text/javascript" language="javascript">
  9. function sgAffiche(nObjet,nEtat) {
  10. document.getElementById(nObjet).style.visibility = (nEtat==0?'hidden':'visible');
  11. }
  12. </script>
  13. <script type="text/javascript" language="javascript">
  14. var ns4=document.layers;
  15. var ie4=document.all;
  16. var ns6=document.getElementById&&!document.all;
  17. function twAfficheCache(nObjet,nEtat) {
  18. // Script gratuit des Trucsweb.com
  19. if(ie4) { // Internet explorer
  20. eval(nObjet).style.visibility = (nEtat==0?'hidden':'visible');
  21. }
  22. else if(ns4) { // Netscape 4.x
  23. document.eval(nObjet).visibility = (nEtat==0?'hidden':'show');
  24. }
  25. else if(ns6) { // Netscape 6 (mozilla)
  26. document.getElementById(nObjet).style.visibility = (nEtat==0?'hidden':'visible');
  27. }
  28. }
  29. </script>
  30. </head>
  31. <body>
  32. <div id="page">
  33. <div id="header"><h1>&nbsp;</h1>
  34. </div>
  35. <br />
  36. <div id="gauche" style="height:250px;">
  37.   <h4>Trouver votre ecole</h4>
  38.   <div style="margin-left:26px; margin-top:0px;padding-top:0px;float:left;">
  39.   <form name="formu_village" method="post" action="#">
  40.     <select name="choixVillage" id="choixVillage">
  41.     <option value="montpellier" onClick="twAfficheCache('village-A',1);twAfficheCache('village-B',0);">Jacou</option>
  42.     <option value="montpellier" onClick="twAfficheCache('village-A',1);twAfficheCache('village-B',0);">Clermont l'herault</option>
  43.     <option value="perpignan" onClick="twAfficheCache('village-A',0);twAfficheCache('village-B',1);">Leucate</option>
  44.     <option value="perpignan" onClick="twAfficheCache('village-A',0);twAfficheCache('village-B',1);">St Cyprien</option>
  45.      </select>
  46.     </form></div>
  47.   <p>
  48. <div id="village-A">Votre ecole :  Montpellier</div>
  49. <div id="village-B">Votre ecole :  Perpignan</a></div>
  50. </p>


 
merci a ceux qui ont la solution  
sand

Reply

Marsh Posté le 09-09-2008 à 15:33:44   

Reply

Marsh Posté le 09-09-2008 à 16:00:37    

bonjour,

 

avec IE, point d'évênements sur les options !
seul vaut onchange sur la balise <select>

 

et là, this.selectedIndex c'est la n° de ligne,
this.options[this.selectedIndex].value ou .text  c'est le .value ou le .text
de l'option sélectionnée.

 

fonctionne aussi avec les autres navigateurs.
 attention d'ailleurs, si le select a un size=1 ou n'a pas
 de size défini, la 1ère option est sélectionnée par défaut,
 il faudra donc sélectionner une autre ligne avant de pouvoir
 déclencher le onchange sur la ligne 0
 c'est pour ça qu'on voit souvent une 1ère ligne bidon dans les select
 on peut mettre size=2 au mins
 on réinitiliser selectedIndex au focus ? ( onfocus:"this.selectedIndex=-1;" }
  ou...
@+


Message édité par bul3 le 09-09-2008 à 16:05:42

---------------
[mon site] [m'écrire]
Reply

Sujets relatifs:

Leave a Replay

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