Label et élément sélectionné d'une radioButtonList

Résolu
Signaler
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010
-
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010
-
Bonjour,


Je recherche la syntaxe qui conviendrait à Firefox pour le pb suivant :


Insérer dans un label d'id = monLabel le texte de l'élément choisi MonItemdemaListe d'une liste radio


document.getElementById(monLabel).innerHTML =document.getElementById(MonItemdemaListe).parentNode.innerText ;



ceci marche sour IE6 mais pas sous Firefox


Quelqu'un a –il une idée ?


Merci du tuyau
Gilles

13 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
<script type="text/javascript">



 function copier()
 {
  for ( var n=0;n<3;n++ )
  {
   if ( document.getElementById("MaListe _"+n).checked )
   {
    document.getElementById("MonLabel").innerHTML=document.getElementsByTagName("label")[n].innerHTML;
   }
  }
 }
</script>





            ----

<label for="MaListe _0">TEXTE_1</label>,

<label for="MaListe _1"> TEXTE_2</label>,

<label for="MaListe _2"> TEXTE_3</label>,
           

texte du label




 on peut probablement faire autrement, mieux sans aucun doute...

 mais franchement... tu vas au delà d'ennuis :
 les caractères spéciaux ( espace : ... sont interdits dans les name, les id... )
 il me semble anormal de traiter le click sur un objet au niveau de son 
      arrière-arrière-grand parent ( onclick label ou radio ==> onclick
       td,tr,tbody,table  ) + la boucle ( inutile )  pour  tester quel bouton 
      radio est coché + nbr radio en dur (3) ...
 
 tel que c'est ici, ça signifie qu'il n'y a pas d'autres "label" dans la page
 sinon il faudra modifier le contenu de la variable n dans la fonction copier()
 attention à la maintanance donc.

 essayes de convaincre ceux qui génèrent ce html de faire les choses correctement :
 id sur label, onclick sur radio, name et id conformes, mettre un
  formulaire...

 ce n'est que mon avis... et il ne vaut pas grand chose.





<hr />
                        Cordialement             Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
j'ai oublié break; dans la boucle lorsque le bouton coché est trouvé.
<hr />
                  Cordialement          Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,

   c'est quoi une liste radio ?
   et parentNode.innerText ?
<hr />
            Cordialement       Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

OK, Je me suis exprimé de façon floue.
une radioButtonList est un controle serveur ASP.Net qui se traduit sur le navigteur-client par une liste de  controles à,cocher
 <label for= "monItemRadio" > TEXTE </label>
----etc...
et agissant façon bascule (un seul restre coché)
mon problème est d'ecrire une commande compatible avec Firefox pour transférer "TEXTE" dans un label "MonLabel".
l'instruction :
document.getElementById(monLabel).innerHTML ='TEXTE' ; conviendrait, mais je dois faire une instruction générale.
l'intruction suivante fonctionne sous IE6
document.getElementById(monLabel).innerHTML=document.getElementById(MonItemdemaListe).parentNode.innerText ;
que mettre sous firefox?
voilà la question
@+Gilles
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
c'est un peu plus clair...
sauf document.getElementById(MonItemdemaListe).parentNode.innerText ?



<hr />
                        Cordialement             Bul          [
mon Site
]    [
M'écrire
]
<hr />
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

là, je ne trouve pas ça clair non plus, mais ça fonctionne ! Si il y a mieux, j'achète !
@+Gilles
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
ben oui, mais pour moi : sans "comment c'est utilisé" ???...
parce que je t'assure que





   <label for= "monItemRadio" >TEXTE</label>
<script type="text/javascript">
document.getElementById(monLabel).innerHTML=
      document.getElementById(MonItemdemaListe).parentNode.innerText ;
</script>



ça ne fonctionne pas du tout avec IE !
donc je vais savoir ne pas le faire fonctionner avec FF.
<hr />
                  Cordialement          Bul       [
mon Site
]    [
=Bul
M'écrire

]
<hr />
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

j'envoie le code exact sous peu
@+G
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
un extrait hein, pas 35985 lignes non plus.
et surtout, le html généré, pas le code ASP.
<hr />
               Cordialement       Bul       [mon Site]    [M'écrire]
<hr />
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

voilà l'extrait du code client, dépuouillé au maximun:



<!-- Le radioButtonList, coté Client, arrive logé dans un contrôle avec ce Code: -->

<table id= \"MaListe\" onClick=\"copier();\" >

            ----

<label for="MaListe _0">TEXTE_1</label>,

<label for="MaListe _1"> TEXTE_2</label>,

<label for="MaListe _2"> TEXTE_3</label>,

           



<!-- Tandis que la label arrive sous forme au client: -->



texte du label<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>





<script language="JavaScript" type="text/JavaScript">



function copier()


{//la conction copie seulement si le 2e élément est cliqué



if (document.getElementById('MaListe _1').checked)





{document.getElementById('MonLabel').innerText =document.getElementById('MaListe _1').parentNode.innerText;}




}
 

</script>
Ca, ça marche.
Et c'est la table qui reçoit l'attribut "onclick". Il est probable que le parentNode désigne la balise <td> qui contient l'élément de liste et son "label for", donc , pour IE6, Tout s'expliquerait.


Reste FireFox !
merci de ta patience
Gilles
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
j'avoue que j'aurais fait cela de manière différente
   pour être "détaché" de la structure de la page
   ( parentNode... )
un ch'tit exemple ( j'ai sucré table,tr,td... pour
   ici, car "inutile" )

<script language="JavaScript" type="text/JavaScript">
function copier(rad)
{
 document.getElementById("MonLabel").innerHTML=document.getElementById("lab"+rad.value).innerHTML;
}
 </script>
 
  
  <label for="MaListe _0" id="lab0">TEXTE_1</label>
  
  <label for="MaListe _1" id="lab1"> TEXTE_2</label>
  
  <label for="MaListe _2" id="lab2"> TEXTE_3</label>





texte du label



il y a 5874 manières de faire
par exemple :
mettre le label dans un autre td
gérer le onclick sur le td du radio
 on obtient rowIndex, le n° de ligne et
 cellIndex, le n° de colonne cliqués ==> 
 on détermine facilement où est le texte
 ( peut être pas dans un label ).

si tu as d'autres contraintes, goûts...
   dis nous, on adaptera.

<hr />
                        Cordialement          Bul    [mon Site]    [M'écrire]
<hr />
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

merci pour ton code, il va surement me servir. Cependant, ici, ce n'est pas moi qui crée le code html, ni la table, mais le serveur, au vu des controles et instructions-serveur que je lui envoie.
Ici, je n'arrive pas à trouver l'instruction qui dote les items <gras>de l'attribut "onclick", je ne possède que l'instruction pour la RadiobuttonList en entier, donc, coté client, que pour la table qui sert de contener.
Alors, soit je vais trouver (hem...), soit, je dois trouver autrechose en javaScript.
Gilles
Messages postés
410
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
8 mai 2010

Merci pour ce nouveau code; il me permet de me tirer d'affaire, même s'il présente les inconvénients que tu annonces.
Cependant, note que personne n'est maitre du code renvoyé par le serveur. Dans son principe, un controle serveur (par exemple une radioButtonlist) est interprèté par le Net.framework qui fait marcher l'ensemble du langage ASP.NET, et renvoyé au client sous forme de code HTML. ce code est standard, et n'aie aucune crainte, ne varie pas d'une page à une autre.
Le fait d'invoquer ParentNode ne me souciait donc pas, car je sais que le code se présentera toujours sous la même forme.
Par contre, sont parfaitement fondéesMerci de m'avoir prévenu.
Pour l'exemple, voici un controle serveur radioButtonlist:

RepeatDirection="Horizontal" EnableViewState="True">
TEXTE_1
TEXTE_2
TEXTE_3
TEXTE_4.


et

Voici le code client renvoyé par le serveur:

   
<label for="IDCLIENT_rblTarifs_0">TEXTE_1</label>
   ,
   
<label for="IDCLIENT_rblTarifs_1">TEXTE_2</label>
   ,
   
<label for="IDCLIENT_rblTarifs_2">TEXTE_3</label>
   ,
   
<label for="IDCLIENT_rblTarifs_3">TEXTE_4</label>
   ,

IDCLIENT est une id déterminée par le serveur interprétant la page, suivant le contexte (controles parents)
monJavaScript est le script client que je suis capable d'affecter au controle server dans le code asp
Ces précisions peuvent servir si quelqu'un est inrterressé sur ce forum
Merci
@+Gilles