Page 1 sur 1

Cochez automatiquement des groupes de checkbox

Posté : 11 déc. 2008, 17:04
par guilt92
Bonjour,

Je ne parviens pas à trouver l'astuce pour que lorsque je clique sur une checkbox un certain nombre d'autres checkbox soit coché.
J'y parviens si je donne un nom propre à chacune, mais avec un nom de type name[] je n'y parviens pas

Code html :

Code : Tout sélectionner

<input type="checkbox" name="chk_Exemple" onclick="switch_check('ss_chk_Exemple')"/> <input type="checkbox" value="1" name="ss_chk_Exemple[]"/> <input type="checkbox" value="2" name="ss_chk_Exemple[]"/>
La fonction js que je n'arrive pas à faire :

Code : Tout sélectionner

function switch_check(name) { for(i=0;i<document.getElementsByName(''+name+).length;i++) //length renvoie 0 :( { document.getElementsByName(''+name).item(i).checked = true; } }
J'ai essayé un for(... in ...) mais pas plus de succès...

Quelqu'un pourrait m'expliquer comment ca fonctionne svp ?

Merci.

Posté : 11 déc. 2008, 17:12
par yaug
bonjour.
Voici comment je fais personnelement :

Code : Tout sélectionner

function reverseSelection(id, bottonId) { if($(id)){ var currentState = $(bottonId).checked; var myform = $(id); var checkboxes = myform.getElementsByTagName('input'); for (var i = 0, matchingInputs = [], length = checkboxes.length; i < length; i++) { var box = checkboxes[i]; if (box.type != 'checkbox') continue; box.checked=currentState ; } } }
Sachant que ID est l'id du formulaire et que bottonId est l'id de l'élément qui va tout inverser.
Cela permet la sélection de tous les éléments, ou leur déselection.

J'avais fait cela vite fait quand j'en avait eut besoin, il doit donc exister de meilleures solutions.

Posté : 11 déc. 2008, 17:29
par guilt92
Merci,

Mais le problème c'est que du coup cela coche toutes les checkboxes du formulaire et non pas uniquement celles qui ont le nom ss_chk_Exemple[] . Je vais essayer d'adapter mais pour l'instant je suis peu inspiré.

Posté : 11 déc. 2008, 17:42
par jojolapine
Tu peux récupérer tout les élements de type input (getElementsByTagName) et ensuite, tu fait un test sur le name, puis tu fait l'action ou pas...

Posté : 12 déc. 2008, 15:23
par guilt92
Merci à vous.

Grâce à mes tests suite à vos réponses j'ai pu établir que tout simplement il fallait mettre les [] dans le nom pour que cela fonctionne.

Problème résolu