5568 sujets

Sémantique web et HTML

Bonjour a tous,
je cherche depuis tout à l'heure une solution a mon problème...en vain.

J'ai un
<div id="contenu" style="visibility:hidden">
que je rends visible (en javascript) en cliquant sur une image.

Dans ce div, j'ai des form.

Lorsque j'affiche le div, j'ai les labels des input, mais je ne vois pas apparaitre les inputs...

J'ai beau retourner le problème dans tous les sens et faire des tests tout azimuth, je ne vois pas quel est le problème....qui je le précise, car ça a son importance, n'existe qu'avec IE (version6) ! Smiley bawling

J'ai tenté d'appliquer un
"visibility:inherit"
sur les forms contenus dans le div, j'ai ensuite modifié mon code avec du display (none et block) dans mon javascript... mais rien n'y fait...soit plus rien ne s'affiche (cas du display none) soit seuls les labels des inputs s'affichent, mais pas les inputs...

si vous aviez une piste ?

Par avance mille merci !

Smiley ravi
3nityy a écrit :
J'ai un
<div id="contenu" style="visibility:hidden">
que je rends visible (en javascript) en cliquant sur une image.

Et si javascript n'est pas activé, rien ne s'affiche ?
Sylvain a écrit :

Et si javascript n'est pas activé, rien ne s'affiche ?


le cas est prévu, il FAUT activer le javascript...
mais ta remarque est très pertinente !
Modifié par 3nityy (31 Jan 2007 - 16:54)
Raphael a écrit :

Je crois que c'était le but Smiley cligne

Rappelons que JavaScript est loin d'être utilisé par tout le monde

Je suis entièrement d'accord, mais malheureusement, pour faire ce que je souhaite faire, je ne vois pas comment autrement...
Cependant, si vous avez une explication pour faire ce dont j'ai besoin autrement (sous entendu sans javascript), je suis preneuse !

Pensez vous que mon problème puisses être lié a l'utilisation d'un javascript ?

a écrit :
trop de cependant tue le cependant

Modifié par 3nityy (31 Jan 2007 - 17:07)
Sylvain a écrit :
Ca dépend, c'est quoi que tu veux faire exactement ?

Désolée, je pensais avoir été claire dans mon message.
Je reprends de billebédu Smiley cligne

Donc j'ai une page, avec un div contenant des informations, caché a l'affichage de la page, qui ne doit être visible QUE sur clique d'une image.

Le contenu de ce div est constitué de plusieurs formulaires.
J'ai bien lu les règles de création d'un formulaire valide XHTML, mais voila, sous ie, les inputs ne s'affichent pas, bien que les labels, eux, s'affichent.

Je vous mets un petit exemple du code ci-dessous.

<div class="contenu">
<br />
<img src="../../images/dossier_payant_etape_1.png"  align="middle" border="0" id="etapes_achat" title="Etapes d'achat du document payant" alt="Etapes" /><br /><br />

<div class="resume">

	<input type="hidden" id="affichage-contenu-article" value="none" /><br />
	<center>
		<a href="#"><img src="images/dp_jachete.gif" border="0" title="Acheter le document" onclick="gereAffichagePaiement();" alt="Acheter le document" /></a>
		<noscript><center><b>Votre navigateur actuel n'accepte pas l'éxécution de scripts en javascript. <br/>Afin de pouvoir remplir le formulaire, il vous faut l'activer. <br/></center></noscript>
	</center>								
</div>

<div class="contenu-article" id="affichage" style="display:none;position:relative;height:0px;"> 
<h2>Veuillez choisir votre mode de paiement</h2>
<br/>
<h4>Par audiotel</h4>
<form method="post" action="identification_dp.php5">
	<p>
	<label>id doc : <input type="text" name="id_doc" value="726" /></label>
	<label>type doc : <input type="text" name="type_doc" value="documents" /></label>
	<label>Titre du document : <input type="text" name="titre_doc" value="document" /></label>
	<label>Tarif<input type="text" name="tarif_doc" value="1.00" /></label>
	<label>Ressource <input type="text" name="ressource" value="2533" /></label>
	<label>Page demandée <input type="text" name="pagedemandee" value="document.php5" /></label>
	<label><input type="text" name="paiement_doc" value="tel" /></label>
	<label><input type="image" src="images/tableau_tel.gif" name="opteloimg" value="Téléphone" title="Téléphone" alt="Paiement audiotel"/></label>
	</p>
</form>
</div>

</div>


j'ai testé deux codes javascript (un avec visibility, l'autre avec display:none)
     <script type="text/javascript" language="JavaScript">
      <!-- //
      // au lancement de la page :
      // alert("container : "+document.getElementById('container').style.position);
      // affichage du moyen de paiement
      function gereAffichagePaiement(){
      //alert(document.getElementById('affichage-contenu-article').value);
      if(document.getElementById('affichage-contenu-article').value == 'hidden') {
          document.getElementById('affichage-contenu-article').value = 'visible';
          document.getElementById('affichage').style.height = 'auto';
         // document.getElementById('etat').innerHTML = 'Etat : '+document.getElementById('affichage-contenu-article').value;
      }
      else {
           document.getElementById('affichage-contenu-article').value = 'hidden';
           document.getElementById('affichage').style.height = '0px';
      }
      //alert("hauteur quand hidden :" +document.getElementById('affichage-contenu-article').style.heigth);
      document.getElementById('affichage').style.visibility= document.getElementById('affichage-contenu-article').value;
      document.getElementById('telephone').style.visibility= document.getElementById('affichage-contenu-article').value;	  
      document.getElementById('cb').style.visibility= document.getElementById('affichage-contenu-article').value;	  	  

      }
	  
      // affichage du moyen de paiement
      function gereAffichagePaiement2(){
      //alert(document.getElementById('affichage-contenu-article').value);
      if(document.getElementById('affichage-contenu-article').value == 'block') {
          document.getElementById('affichage-contenu-article').value = 'none';
          document.getElementById('affichage').style.height = '0px';
      }
      else {
           document.getElementById('affichage-contenu-article').value = 'block';
           document.getElementById('affichage').style.height = 'auto';
      }
      //alert("hauteur quand hidden :" +document.getElementById('affichage-contenu-article').style.heigth);
      document.getElementById('affichage').style.display = document.getElementById('affichage-contenu-article').value;

      }	  
      // -->
      </script>


J'espère avoir été plus clair, si ce n'est pas le cas, n'hésitez pas a me le signaler ! Smiley confused
Modifié par 3nityy (31 Jan 2007 - 17:26)
Il serait plus accessible d'ouvrir une page contenant le formulaire lorsque l'on clique sur l'image. Pourquoi faire ce comportement?
Sylvain a écrit :
Il serait plus accessible d'ouvrir une page contenant le formulaire lorsque l'on clique sur l'image. Pourquoi faire ce comportement?


Et bien simplement parce que c'est une demande de la cliente....

Je ne peux faire autrement. Smiley bawling
Modifié par 3nityy (05 Feb 2007 - 14:02)
Bonjour à tous,

Je remonte le sujet au cas ou quelqu'un ait trouvé quelque chose depuis quelques mois.

Sur IE6, j'ai exactement le même problème. Les formulaires contenus dans les div cachés ne sont pas correctement affichés lorsque les div deviennent visibles.

Sur Firefox en revanche tout fonctionne très bien. Pour info, je ne cherche pas l'accessibilité totale, il s'agit d'une application en intranet avec des spécifications utilisateurs particulières (mais l'utilisation exclusive de Firefox n'en fait pas partie...)

Pour tenter de répondre au problème, pensez-vous qu'il possible d'attribuer un ordre d'affichage pour le formulaire => Champs de formulaire AU DESSUS du div ? En somme déterminer l'ordre dans lequel les "couches" doivent se trouver...