cocher plusieurs checkbox

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : cocher plusieurs checkbox

Re: cocher plusieurs checkbox

par jojolapine » 12 oct. 2009, 14:45

SUr le checkboc visiblement non...
Pourtant que un select il me semble que ça fonctionne... à tester...
Pour revenir au problème de départ... si tu avais placé un ou deux alert('something') dans ton code, tu aurais vite résolu le problème ;)
Penses-y la prochaine fois ;)

Re: cocher plusieurs checkbox

par toony.m » 12 oct. 2009, 14:35

Tout ça à cause de onclick....et ba
merci infiniment!!

Donc IE ne gère pas le OnChange ?

Re: cocher plusieurs checkbox

par jojolapine » 12 oct. 2009, 13:17

Alors en fait le problème ne venait pas de tout ce que je t'ai listé pus haut (puisque la checkbox est après dans le dom)
Mais de l'évènement "onchange" qui ne passe pas visiblement...
Remplace le par un "onclick" et tu verras, ça fonctionne parfaitement ;)

Re: cocher plusieurs checkbox

par toony.m » 12 oct. 2009, 11:44

Voila une version allégée qui fonctionne donc sous FF mais pas IE :
<HTML>
<HEAD>
<TITLE>Titre</TITLE>
</HEAD>
<BODY >
<FORM ACTION="planning.php" METHOD="POST" name="form" >
  <BR>
  <BR>
   <input name="1-8" type="checkbox" id="1-8" value="1" >
    <input name="1-9" type="checkbox" id="1-9" value="1" >
    <input name="1-10" type="checkbox" id="1-10" value="1" >
    <input name="1-11" type="checkbox" id="1-11" value="1" >
    <br>
    <br>
    <input name="1-tc" type="checkbox" id="1-tc" value="1" onchange="document.getElementById('1-8').checked=this.checked;document.getElementById('1-9').checked=this.checked;document.getElementById('1-10').checked=this.checked;document.getElementById('1-11').checked=this.checked;">
				
</FORM>
</BODY>
</HTML>

Re: cocher plusieurs checkbox

par jojolapine » 12 oct. 2009, 11:31

Donnes nous le code complet (simplifié hein... veut pas tout le reste de la page ;) ) html/js de tes tests pour pouvoir tester chez nous...

Re: cocher plusieurs checkbox

par toony.m » 12 oct. 2009, 11:30

Ah ok!

Mais pourtant toutes mes checkbox sont situées avant ma chk "tout cocher".

ET je n'arrive pas à mettre la main sur script tout simple qui dise de cocher telle case si untel est coché.
C'est si compliqué que ca ?

Re: cocher plusieurs checkbox

par jojolapine » 12 oct. 2009, 11:22

En fait le problème pour IE c'est que tu indique dans le onchange de ton premier checkbox qu'il faut agir sur d'autres checkbox placés après dans la page...
Et lorsqu'IE analyse ces instructions, il n'a pas finit de chargé la page et donc les autres checkbox...
Du coup ça ne rime à rien pour lui le getElementById() sur un élément inexistant...
Donc tu dois attacher les différentes actions sur tes éléments après le chargement complet de la page, pour rester le plus compatible possible...
Il y a plusieurs techniques pour ça...
Tu peux mettre ton code javascript tout en bas de page (pour peu qu'il soit non-intrusif), utiliser l'évènement onload de l'élément <body>, ou encore utiliser des bibliothèques javascript qui gère ça plus simplement (dans mon exemple avec jquery, c'est $(document).load() qui joue ce rôle...)

Re: cocher plusieurs checkbox

par toony.m » 12 oct. 2009, 10:59

je comprends pas tout ce que tu me dis mais j'ai essayé avec du booleen mais ca ne marche pas plus :

Code : Tout sélectionner

document.getElementById('1-8').checked=true document.getElementById('1-8').checked=1

Re: cocher plusieurs checkbox

par jojolapine » 12 oct. 2009, 10:43

Après recherche il apparait que IE attende un booléen pour la valeur de l'attribut checked...
Ou alors utilise

Code : Tout sélectionner

elmt.setAttribute('checked','checked');
Par contre tout ça ne fonctionnera pas si le document n'est pas chargé entièrement...
Donc il faut que tu ajoutes un évènement sur le onload du body, et si tu en as déjà, regarde du côté de http://simonwillison.net/2004/May/26/addLoadEvent/
Et si tu veux pas t'e********er avec toutes ces compatibilité, et bien utilises un framework :)

Re: cocher plusieurs checkbox

par toony.m » 12 oct. 2009, 10:38

[jojolapine]

Ca marche sous firefox mais sous IE...

Re: cocher plusieurs checkbox

par jojolapine » 12 oct. 2009, 10:23

Essaye simplement

Code : Tout sélectionner

document.getElementById('1-8').checked='checked';
pour voir?
Et puis pour faire plus propre tu peux quand même te le mettre dans une petite fonction ;)

Re: cocher plusieurs checkbox

par toony.m » 12 oct. 2009, 10:09

Merci pour l'idée!

Mon nombre de checkbox etant fixe, j'ai trouvé plus simple en fait :

Code : Tout sélectionner

<input ... onchange="document.getElementById('1-8').checked=this.checked; document.getElementById('1-9').checked=this.checked;etc...">
Le problème c'est que sa marche TB sous firefox et que cela fait même double usage (cocher/decocher) mais ca ne fonctionne pas sous IE...
pourtant l'instruction est du pur javascript :

Code : Tout sélectionner

"document.getElementById('1-8').checked=this.checked;
Que faut-il corriger pour IE ?

Re: cocher plusieurs checkbox

par jojolapine » 08 oct. 2009, 14:03

Oups... j'édite de ce pas mon messages ;)

Re: cocher plusieurs checkbox

par Victor BRITO » 08 oct. 2009, 13:07

j'ai un doute entre 'checked' et 'selected' à toi de tester
checked pour les cases à cocher et les boutons radio (input[type="checkbox"] et input[type="radio"]), selected pour les menus de sélection (élément option).

Re: cocher plusieurs checkbox

par jojolapine » 08 oct. 2009, 09:22

Il te sera assez fastidieux de le faire depuis zero, par contre en utilsiant une bibliothèque javascript (Je ne connais que Jquery donc je vais te montrer avec celle là ;) ) ça devrait pas être trop dur!
Voilà ce que ça donnerait pour ton code html:

Code : Tout sélectionner

// On attend que le document soit chargé $(document).ready(function(){ // Si on clique sur la checkbox désignée $('#1-1').click(function(){ // On coche toute les checkbox dont l'id commence par '1-' $('input[type="checkbox"][id^="1-"]).attr('checked','checked'); // j'ai un doute entre 'checked' et 'selected' à toi de tester ;) }); });
Tu peux même améliorer en changeant

Code : Tout sélectionner

$('input[type="checkbox"][id^="1-"]).attr('checked','checked');
par

Code : Tout sélectionner

$('input[type="checkbox"][id^="1-"]).attr('checked',$(this).attr('checked')); // En sachant que le $(this) renvoi à la première checkbox $('#1-1')
Ce qui te permetra aussi de "décocher" toute les coches si tu décoches la première...