28220 sujets

CSS et mise en forme, CSS3

Bonjour

Je travail sur un formulaire qui comporte plusieur select, qui déclenchent une action une foix la selection faite (onchange). J'affiche alors un div loading , du genre veuillez patienter SVP! , jusqu'à là tout va bien.
Vu que mon formulaire est assez grand (on ne voit pas le div ) et que IE ne supporte pas les positions en fixed (fait des grand trou dans le form).

Avez vous une solution ?
si je pouvais recuperer la position du select au moment du lancement de ma fonction Montrer/CacherLoader, je pourrais positionner le div relativement à ce select, mais je n'arrive pas a recuperer la valeure de document.monform.monselect.style.top dans ma fonction Javascript??

Merci pour vos idées
Tibor
Modifié par oceatoon (13 Jun 2005 - 16:18)
Pour récupérer la position d'un élément par le DOM, tu ne peux (en général) pas écrire document.monform.monselect.style.top car cela renvoie aux styles définis par l'utilisateur, et non aux styles calculés par le navigateur pour afficher la page... il y a d'autres méthodes d'accès pour cette usage :
document.monform.monselect.offsetTop par exemple. Il y a une documentation très complète sur ces propriétés à cette adresse :
http://www.mozilla.org/docs/dom/domref/dom_el_ref.html#1023967

D'autre part pour les accès aux formulaires par le DOM :
http://openweb.eu.org/articles/validation_formulaire/
En effet l'accès "document.monform.monselect" n'est pas très conseillé... il vaut mieux utiliser document.forms[0].elements['monselect'] par exemple.

Pour ce qui est de ton problème en CSS, tu as essayé avec des éléments en "position: relative", qui seraient en "display: none" par défaut, et que tu afficherais avec un "display: block" au moment voulu ?
voila une réponse rapide clair et concise , merci Fwed.
offsetTop marche niquel sous FX merci . Pour ceux qui veulent le recupérer voir ci dessous.

Malheureusemetn le offsetTop marche bizarement sous IE ??

en ce qui concerne ta question (display ??) oui mais je le fait avec visibility car il me semble que display:block fait un écart sous IE, j'utilise un positionnement absolute.
est ce que c 'est bon, ou aurais tu un meilleure facon de faire?

Merci pour l'aide

<script language="javascript" xml:space="preserve">
 function loaded(id,idanchor){
               if(idanchor)
                  var top = document.forms["regform"].elements[idanchor.id].offsetTop;
                  var d = document.getElementById(id);
                  if(top)
                     document.getElementById("loading").style.top = top+"px";
                  if(d.style.visibility == "hidden")
                     document.getElementById("loading").style.visibility = "visible";
                  else
                     document.getElementById("loading").style.visibility = "hidden";
               }
            </script>

dans mon html j'ai :
<div id="loading">
               <p class="bold textbig">
                  <i18n:text key="parag_wait1"/>
               </p>
            </div>

et mon form
<form action="skevoovoolé" name="regform" method="post" enctype="multipart/form-data" onsubmit="forms_onsubmit(); ">
<select title="" id="country" name="country" onchange="loaded('loading',this); forms_submitForm(this);" style="width:170px">



Modifié par oceatoon (13 Jun 2005 - 17:41)
Eh bien ça me semble correct pour le visibility: hidden, en fait suivant les cas on a parfois besoin de display: none et d'autres fois visibility: hidden, tout dépend de ce que tu veux exactement. Mais si ça te convient ainsi, alors c'est ok !
Je dois avouer je ne connais pas le comportement de offsetTop sous IE (je suis sous Mac : sur Safari, Firefox et Opera ça marche bien !) donc je n'ai pas pu tester sous IE...