masquer une checkbox à partir d'un radioButton

masquer une checkbox à partir d'un radioButton - HTML/CSS - Programmation

Marsh Posté le 05-03-2008 à 10:16:47    

Bonjour,
 
Je souhaite afficher ou masquer une checkbox à partir d'un RadioButton et codé en javascript.
La checkbox prend un id en paramètre = chk.
J'ai une liste de RadioButton appellée SelectionP, j'ai attribué à cette liste un nom=selection et lorsque que je clique sur un bouton ça lance la fonction suivante:
 
function displayCheck() {
 zone = document.getElementById('chk');
 button = document.getElementsByName('selection');//récupère le nom  
 
 if (button == "oui" && button.selected == true){
  zone.style.visibility='hidden';
 }
}
 
J'ai l'impression que le code est bon mais lorsque que je clique sur le bouton nommé "oui", ceci ne masque pas la checkbox.
 
Merci d'avance pour votre aide
 
Cordialement,
 
titi04

Reply

Marsh Posté le 05-03-2008 à 10:16:47   

Reply

Marsh Posté le 05-03-2008 à 10:19:45    

Je te suggère d'apprendre ce que fait getElementsByName, parce que c'est sûrement pas ce que tu penses.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 05-03-2008 à 10:20:49    

getElementsByName retourne un tableau d'elements. Il te faut parcourir celui ci.
Il manque également un value à ton test == "oui"
edit:  [:benou_grilled]


Message édité par anapajari le 05-03-2008 à 10:21:55

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 05-03-2008 à 10:40:59    

J'ai changé ma fonction:
 
function displayCheck() {
 zone = document.getElementById('chk');
 button = document.getElementsByName('selection');  
 
for (i=0;i<button.length;i++){
    if (button[i].selected == true && button[i].value == 'oui'){
        zone.style.visibility='hidden';
       }
    }
}  
 
Je suis désolée pour ces erreurs mais je débute !
Sinon, en changeant mon code, ceci ne change rien, la checkbox ne se masque pas. Faut-il que j'enlève le coche par défaut de ma RadioButton.

Reply

Marsh Posté le 05-03-2008 à 10:47:49    

Dans tous les bons navigateurs (dans Firefox en tout cas), il existe une console d'erreurs qui t'indique les erreurs de javascript...
Tu vas sur ta page.  
OUtils -> Console d'erreurs -> Onglet "Erreurs" (tu cliques un coup sur "Effacer" pour purger les anciennes erreurs)
Tu recharges ta page et tu cliques sur ton bouton ou sur l'endroit ou tu as mis ton code...
Si ca ne marche pas (même si ca marche tu peux le faire), tu ouvres la console d'erreurs et tu débugues en fonction de ce qui a été dit dans la console...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 05-03-2008 à 10:54:21    

titi04 a écrit :

J'ai changé ma fonction:
 
function displayCheck() {
 zone = document.getElementById('chk');
 button = document.getElementsByName('selection');  
 
for (i=0;i<button.length;i++){
    if (button[i].selected == true && button[i].value == 'oui'){
        zone.style.visibility='hidden';
       }
    }
}


C'est toujours n'importe quoi.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 09:54:34    

masklinn a écrit :


C'est toujours n'importe quoi.


 
Pourrais tu m'indiquer ce qui ne vas pas dans mon code s'il te plaît?

Reply

Marsh Posté le 06-03-2008 à 10:02:30    

Je te l'ai déjà indiqué dans mon premier post.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 10:08:08    

getElementsByName retourne un tableau d'éléments comme l'a suggéré anapajari. Donc, je parcours mon tableau dans la fonction.

Reply

Marsh Posté le 06-03-2008 à 10:16:03    

titi04 a écrit :

getElementsByName retourne un tableau d'éléments comme l'a suggéré anapajari.


C'est juste, mais c'est extrèmement incomplet, et c'est sur la partie manquante que tu te plantes.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 10:16:03   

Reply

Marsh Posté le 06-03-2008 à 10:19:10    

Je ne pourrais pas avoir un peu plus d'aide de ta part car pour le moment je bloque. J'ai bien cherché ce que faisais getElementsByName mais je ne vois pas ce que tu veux dire.

Reply

Marsh Posté le 06-03-2008 à 10:26:37    

titi04 a écrit :

Je ne pourrais pas avoir un peu plus d'aide de ta part car pour le moment je bloque. J'ai bien cherché ce que faisais getElementsByName mais je ne vois pas ce que tu veux dire.


http://developer.mozilla.org/en/do [...] sByTagName

Citation :

Returns a list of elements with the given tag name. The subtree underneath the specified element is searched, excluding the element itself.


 
Et on peut noter que "tag name" ne signifie pas "attribut name dans le tag"
http://developer.mozilla.org/en/do [...] nt.tagName

Citation :

Given the following markup:
 

Code :
  1. <span id="born">When I was born...</span>


and the following script
 

Code :
  1. var span = document.getElementById("born" );
  2. alert(span.tagName);


In XHTML (or any other XML format), "span" would be alerted. In HTML, "SPAN" would be alerted instead.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 10:34:16    

Masklinn, il utilise getElementsByName ( http://developer.mozilla.org/en/do [...] entsByName ) et pas getElementsByTagName.
Je dis ça je dis rien  [:nedurb]

Message cité 1 fois
Message édité par anapajari le 06-03-2008 à 10:35:54

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 06-03-2008 à 10:50:06    

anapajari a écrit :

Masklinn, il utilise getElementsByName ( http://developer.mozilla.org/en/do [...] entsByName ) et pas getElementsByTagName.
Je dis ça je dis rien  [:nedurb]


Oshit, j'ai loosé sur le coup, j'utilise tellement pas cette fonction que je me souvenais même plus de son existence [:prozac]  
 
Bon ben désolé titi04, j'ai merdé sur le coup :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 11:15:34    

D'abord, il faut que tu apprennes à récupérer les valeurs de ta liste déroulante et savoir quels radiobuttons est cochés.
Tu enlèves ta boucle. Tu vas dans Google et tu tapes :

  • récupérer valeurs liste déroulante javascript puis
  • récupérer valeurs rediobutton javascript  

Et tu sauras comment récupérer les valeurs de tes boutons, listes...
Une fois que tu auras réussi cette étape, tu peux revenir vers nous si tu continues à avoir des problèmes...
 


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 06-03-2008 à 12:07:39    

badass> quand tu sauras lire un topic, tu pourra te permettre ce genre de post [:nedurb]
A quel endroit as-tu vu qu'il parlait d'une liste déroulante???

 

titi04>tu as juste une erreur dans ton code. Les "radios" n'ont pas de propriété selected mais une propriété checked, donc remplace:

Code :
  1. if (button[i].selected == true && button[i].value == 'oui'){


par

Code :
  1. if (button[i].checked == true && button[i].value == 'oui'){
 

Bon maintenant, reste que ta fonction est vraiment pas top :o
Vu que tu as, j'imagine, mis un click handler sur chacun de tes radio, je passerais l'objet cliqué en paramètres à la fonction afin de ne tester que celui-ci est s'éviter une boucle.

Message cité 2 fois
Message édité par anapajari le 06-03-2008 à 12:08:24

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 06-03-2008 à 12:11:36    

anapajari a écrit :

titi04>tu as juste une erreur dans ton code. Les "radios" n'ont pas de propriété selected mais une propriété checked, donc remplace:

Code :
  1. if (button[i].selected == true && button[i].value == 'oui'){


par

Code :
  1. if (button[i].checked == true && button[i].value == 'oui'){



J'aurais même tendance à passer par getAttribute() juste au cas où :o

 

et accessoirement, la valeur renvoyée par .checked n'est pas nécessairement "true" (et c'est pas censé être true en fait" ), ça marchera que sous IE :o

Message cité 1 fois
Message édité par masklinn le 06-03-2008 à 13:00:39

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 12:21:39    

anapajari a écrit :

badass> quand tu sauras lire un topic, tu pourra te permettre ce genre de post [:nedurb]  
A quel endroit as-tu vu qu'il parlait d'une liste déroulante???


Euh, qu'est ce que je t'ai fait ?  [:vinx2]  

  • Ma remarque à titi04 était sans animosité mais juste un constat que ce qu'il demande est assez courant sur le net et donc avec une petite recherche, il pouvait se débloquer un peu
  • Pour le coup, de la liste j'ai un peu trop vite lu la phrase de titi04 "J'ai une liste de RadioButton appellée SelectionP, j'ai attribué à cette liste un nom=selection "...

[HS]
Ca fait deux fois que tu déformes mon nom, quelle en est la cause ? On se connait ? On a gardé les cochons ensemble ? Une private joke qui ne fait rire que toi ?
[/HS]


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 06-03-2008 à 13:20:09    

masklinn a écrit :

et accessoirement, la valeur renvoyée par .checked n'est pas nécessairement "true" (et c'est pas censé être true en fait" ), ça marchera que sous IE :o


euh.... .checked renvoit true/false pour un radio input sous tous les navs il me semble.  
qu'est ce que tu veux que ça renvoit d'autre?

babasss a écrit :

  • Ma remarque à titi04 était sans animosité mais juste un constat que ce qu'il demande est assez courant sur le net et donc avec une petite recherche, il pouvait se débloquer un peu

la mienne était également sans animosité [:spamafote]

babasss a écrit :

[HS]Ca fait deux fois que tu déformes mon nom, quelle en est la cause ? On se connait ? On a gardé les cochons ensemble ? Une private joke qui ne fait rire que toi ?
[/HS]


:jap: sorry, je croyais vraiment que c'était badass et pas babass
 
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 06-03-2008 à 13:45:30    

Merci pour tous vos conseils.
 
J'ai réussi à faire ce que je voulais grâce à vos remarques et donc la fonction donne:
 
function displayCheck() {
 zone = document.getElementById('chk');
 button = document.getElementsByName('selection');
 
 for (i=0;i<button.length;i++){
  if ((button[i].value == 'oui') && (button[i].checked == true)){
   zone.style.visibility = 'hidden';
   break;
  }
  else {
   zone.style.visibility = 'visible';
  }
 }
}
 
 

Reply

Marsh Posté le 06-03-2008 à 14:36:06    

anapajari a écrit :


euh.... .checked renvoit true/false pour un radio input sous tous les navs il me semble.  
qu'est ce que tu veux que ça renvoit d'autre?


Lose v2 de ma part [:dawa]
 
C'est e.getAttribute("checked" ) qui renvoie null/"checked" dans tous les navigateurs, sauf MSIE qui renvoie true/false :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-03-2008 à 21:55:30    


Je vous ai dit que ma fonction fonctionnait!
C'est toujours le cas mais seule la checkbox se masque, et j'aimerai que le texte qui lui est associé soit aussi masqué.
Mais pour l'instant ce n'est pas le cas...J'ai essayé avec objet.value...et d'autres aussi mais rien à faire.
Savez vous quel(s) objet ou fonction faut-il utiliser?
 
Merci encore

Reply

Marsh Posté le 07-03-2008 à 09:23:00    

tu mets ta checkbox et ton texte dans un container ( un div ou p ou ce que tu veux) et tu règles la visibilité de ce container


Message édité par anapajari le 07-03-2008 à 09:23:13

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 07-03-2008 à 09:36:34    

ok.
Merci

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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