Afficher des cellules en fonction de l'état d'un groupe de boutons radio [Résolu]

Signaler
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008
-
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008
-
Bonjour,
Je cherche a realiser un tableau a affichage variable en fonction de l'état d'un groupe de bouton radio.
La structure de mon tableau est la suivante : plusieurs lignes le composent et un bouton radio est présent dans chaque ligne (leur valeur est l'ID en quelque sorte de la ligne). Au depart, chaque ligne comporte des informations 'basiques', générales et j'aimerai qu'en fonction du choix de l'utilisateur, des informations un peu plus poussées d'affichent et ceci que si la ligne en question est selectionnée.

Pour ca j'ai crée deux fonction javascript chargé pour l'une de definir le display sur block et l'autre sur none et j'utilise les evenement 'onchange' et 'onClick' sur les bouton radio, mais ca ne produit pas l'effet escompté (meme lorsque je ne selectionne pas un autre bouton radio par le biais d'un clique, le clique masque la zone d'informations supplémentaire)

Comment peut-on donc faire ca?
Merci et bonne fin d'après midi.

12 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
pas tout à fait mais...
un ch'tit exemple :

<script type="text/javascript">
 function CachMont(ou)
 {
  var tmp=document.getElementById("tableau").rows[ou.rowIndex+1];
  if (tmp.style.display=="none")
   tmp.style.display=""; // #### normalement il faudrait mettre "inline" ou "block"
  else                   // #### mais dans ce cas avec FireFox, la ligne resterait
   tmp.style.display="none";
 }
</script>
 ----
ligne:1_1,
 ----
ligne:1_2 |
 ----
ligne:2_1,
 ----
ligne:2_2 |

il y a 36 manières de faire, en voici une
j'ai viré le maximum, reste à adapter à ce que tu veux.
des boutons radios me semblent inadaptés.
mais comme ici les actions se font lorsqu'on clique
   sur la ligne...on met ce qu'on veut.
s'il y avait plus d'une ligne à montrer/cacher,
   il vaudrait mieux gérer ça avec des ID.

cordialement   Bul   
Site
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
et ben alors... un petit while....

...
var codeZone=0;
while ( document.getElementById("AdvencePanel_"+codeZone)
{
   ...faire le boulot... 
      sur  document.getElementById("AdvencePanel_"+codeZone).style.display
   codeZone++;
}
...

cordialement   Bul   
Site
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
bonjour,
   tu devrais donner un extrait du code qui ne fonctionne pas
   ça nous éviterait de proposer quelque chose et que cela ne
   convienne pas, car malgré les explications, on peut envisager
   23689 scénari avec chacun de nombreuses solutions.
cordialement   Bul   
Site
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Cela ne servirait à rien de donner mon code... ce n'est pas la bonne solution, voila tout.
Cependant, je ne tient appremment pas le bon bout et pour les 23689 sénarios, propose en juste un qui me permette d'afficher une case de tableau en fonction de l'état d'un bouton radio sur sa propre ligne et qui masque toutes les autres cellules du meme type sur les autres lignes (vu que les autres bouton radio sont décochés). Pour prendre un exemple, sur la mule, lorsque l'on double clique sur un item de la liste, on a la liste des clients qui peuvent nous fournir le fichier demandé.
Imaginons que lorsque l'on affiche une liste de client pour un fichier, les autres se masquent de leur propre chef, et bien c'est cet effet que je veut produire.
Le tout ne peut pas etre codé en dure vu que les tableaux ont un nombre de lignes variable et ils sont crées en php (je peut bien mettre le script en meme temps que le tableau dans mon php).

Merci de ton aide
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>propose en juste un

si j'en propose un, pas sûr qu'il te convienne justement !

>>permette d'afficher une case de tableau en fonction de l'état d'un bouton
>>radio sur sa propre ligne et qui masque toutes les autres cellules du meme
>>type sur les autres lignes
ah, ben voila, les choses se précisent, le scénario est presque clair
encore une question : >>les autres cellules du meme type
est-ce à dire sur la même colonne ?
si oui, on peut faire quelque chose.
si non, auraient-elles ( les autres cellules )
quelque chose de commun avec celle qu'on doit afficher ?
name ? id ? que sais-je ? et on pourra faire...

cordialement   Bul   
Site
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

En fait, mon tableau est desiné de la maniere suivante :
Je fait une ligne pour les infos de bases, qui, elle, est affichée dès le debut et je fait une deuxieme ligne qui est masquée au debut et qui contient des options plus pousée, en fait il s'agit de ligne est non de cellules, désolé je me suis planté.
Au final, on obtient pour chaque entrée dans ma base de donée un couple de deux lignes de tableau, l'une affichée (qui contient le bouton radio) et l'autre masquée.

Merci pour ton aide, je serais ravi que tu me toruve quelquechose^^
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
résumons ? :

un tableau ( <table... )
les lignes impaires sont affichées
   et si on clique un bouton de cette ligne
   ( il y a plusieurs colonnes ? n'importe où ?
      sur un bouton ?... bon, on va supposer mis 
         dans la 1ère colonne... )
      ==> on affiche la ligne suivante de ce tableau
j'ai bon ?

cordialement   Bul   
Site
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

je vais te montrer mon code, ca sera plus simple. Voila un couple de deux lignes dont je fait allusion

//Ligne 1
<tr>
    <td></td>
    <td></td>
    <td></td>
    <td align="center"></td>
    <td align="center"></td>
    <td align="center"></td>
    <td align="center"></td>
  </tr>

//Ligne 2
  <tr style="display:none" id="test_advencePanel">
    <td colspan="7" align="center"></td>
  </tr>

L'input de la premiere ligne (premiere cellule effectivement) est le bouton radio dont je parle depuis le début. Tu peut constater que la deuxieme ligne a l'attribut dispaly sur none ce qui lui confere de ne pas s'affciher au debut et le bouton radio, en cas de selection, doit la mettre sur visible et lorsque j'en clique un autre du groupe, n'importe lequel, la ligne 2 doit disparaitre et ce pour tout les couples de lignes.

J'espere que j'ai tout dit...enfin si il te manque un truc n'hésite pas.
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Oui, voila, c'est ca a une chose près, il faudrait que toutes les lignes '_2' se cachent lorsque j'en affiche une nouvelle. Par exemple, imaginons que je clique sur la ligne 1, la ligne 1_2 s'affiche et lorsque je vais cliquer sur la ligne 2, la ligne '1_2' disparait et la '2_2' apparait. C'est la ou je seche... je ne sait pas comment dire a mon script de masquer toutes les lignes '_2'(dans ton exemple) précédamment ouvertes pour que j'en affiche une supplémentaire.

En tout cas, merci pour ton aide c'était très bien!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
si on veut rester dans la même optique :

   avant d'afficher une ligne, 
      cacher
      _ toutes les lignes impaires ( ou paires )
            ça dépend de ton tableau
      _ les lignes qui ont style.display="none"
      _ les lignes qui un id dont le début du
         nom est commun ( lig_1, lig-2, lig_3... lig_# )
      _ ... par exemple
      
cordialement   Bul   
Site
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Ah! si on peut faire en fonction des id des lignes, sache que je nomme mes lignes a masquer/demasquer comme ca id="AdvencePanel_'code_zone'" (sachant que code_zone varie).
D'ailleurs, si on fait en fonction du nom, je suppose que cela va atteindre toutes les lignes dont l'id commence comme ca. Vu qu'il y a plus d'un tableau/formulaire dans le genre sur ma page, il faudrait se focaliser sur le masqage de toutes les lignes "AdvencePanel_" dans le tableau ou le bouton radio a été cliqué (les autres ne devant pas changer d'apparence).

Enfin bref, tu progresse à grands pas,  merci beaucoup!
Messages postés
209
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 janvier 2008

Exuse-moi pour le temps de réponse, mais j'ai finalement reussi a faire ce que je voulais faire avec ce que tu m'as proposés. Un grand merci a toi et bonne soirée!