Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1281 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Cocher toutes les cases sachant qu'elles ont un nom différent

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Cocher toutes les cases sachant qu'elles ont un nom différent

n°1378272
Cat Mary
Posté le 31-05-2006 à 17:05:36  profilanswer
 

Bonjour,
 
Je débute en javascript et depuis un long moment je cherche à résoudre un problème.
J'ai des cases à cocher avec des noms différents et je souhaiterai, en cochant une case en haut du tableau cocher toutes les cases (comme sous hotmail).
 
Pour cocher toutes les cases portant un même nom, il y pas de problème, j'utilise ce script :

Code :
  1. function check(field) {
  2. if (checkflag == "false" ) {
  3.  for (i = 0; i < field.length; i++) {
  4.   field[i].checked = true;
  5.  }
  6.  checkflag = "true";
  7. }
  8. else {
  9.  for (i = 0; i < field.length; i++) {
  10.   field[i].checked = false;
  11.  }
  12.  checkflag = "false";
  13.  }
  14. }


 
qui est appelé par

Code :
  1. onClick="check(this.form.pdt)"


 
les noms des cases sont de la forme :

Code :
  1. pdt[112]


 
Je bloque complètement depuis un moment donc si vous aviez des conseils à me donner cela m'aiderait beaucoup.
 
Merci d'avance.

mood
Publicité
Posté le 31-05-2006 à 17:05:36  profilanswer
 

n°1378274
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-05-2006 à 17:10:26  profilanswer
 
n°1378278
Cat Mary
Posté le 31-05-2006 à 17:15:03  profilanswer
 

C'est gentil mais j'ai déjà fait une recherche.
J'ai d'ailleur essayé le script suivant trouvé sur le forum :

Code :
  1. function checkAll(){
  2. checkflag = ! checkflag; //on inverse le flag
  3. var inpNodes = document.getElementsByTagName('input');
  4. foreach(input in inpNodes){
  5.  if ( input.getAttribute['type'] == 'checkbox'){
  6.   input.checked = checkFlag;
  7.   //alert(input.value + ' => ' + document.getElementById('champ_'+input.value);
  8.  }
  9. }
  10. }


 
Et il me met que la fonction checkAll n'est pas défini, je comprends pas pourquoi.

n°1378282
Cat Mary
Posté le 31-05-2006 à 17:18:12  profilanswer
 

qui vient d'ailleurs de toi, si je ne me trompe pas

n°1378283
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-05-2006 à 17:18:19  profilanswer
 

elle a l'air très bien cette fonction :o et l'erreur laisse plus penser à une mauvaise implémentation ...
 
Tu peux filer le code de toute la page ou tu l'utilise?

n°1378288
Cat Mary
Posté le 31-05-2006 à 17:22:22  profilanswer
 

Code :
  1. <script language="javascript">
  2. //Fonction javascript permettant de cocher/décocher simultanément toutes les cases
  3. var checkflag = true;
  4. function checkAll(){
  5. checkflag = ! checkflag; //on inverse le flag
  6. var inpNodes = document.getElementsByTagName('input');
  7. foreach(input in inpNodes){
  8.  if ( input.getAttribute['type'] == 'checkbox'){
  9.   input.checked = checkFlag;
  10.   //alert(input.value + ' => ' + document.getElementById('champ_'+input.value);
  11.  }
  12. }
  13. }
  14. </script>
  15. </head>
  16. <body>
  17. <form action="importationCatalogue.php" method="GET" name="supprProduit">
  18. <table border="0" cellspacing="0" cellpadding="3">
  19.   <tr height="24" class="enTete">
  20.     <td class="enTete">
  21.   <input type="checkbox" name="toutCocher" onClick="javascript:checkAll()" checked="checked">
  22. </td>
  23.     <td class="enTete">R&eacute;f&eacute;rence</td>
  24.     <td class="enTete">Nom</td>
  25.   </tr>
  26.   <?php
  27.   foreach($enAttente as $pdtEnAttente){
  28.    // Choix des couleurs de lignes
  29. if ($i == 0){
  30.  $coultab = "cellule1";
  31.  $i = 1;
  32. }else{
  33.  $coultab = "cellule2";
  34.  $i = 0;
  35. }
  36.   ?>
  37.   <tr height="24" class="<?=$coultab?>">
  38.     <td class="<?=$coultab?>" align="center">
  39.  <INPUT type="checkbox" name="pdt[<?= $pdtEnAttente['id_produit'] ?>]" id="pdt[<?= $pdtEnAttente['id_produit'] ?>]" value="1" checked="checked">
  40. </td> 
  41.     <td class="<?=$coultab?>"><?= $pdtEnAttente['reference'] ?></td>
  42.     <td class="<?=$coultab?>"><?= $pdtEnAttente['nom'] ?></td>
  43.   </tr>
  44.   <?php
  45.   }
  46.   ?>
  47. </table>
  48. </form>
  49. </body>
  50. </html>

n°1378298
pikti
I’ve done worse
Posté le 31-05-2006 à 17:30:20  profilanswer
 

Code :
  1. /*
  2. / Coche ou décoche en fonction du booléen passé en paramètre  
  3. / toutes les checkbox présentes sur la page.
  4. /
  5. / Param : check
  6. / on coche tout si check = true
  7. / on décoche tout si check = false
  8. */
  9. function CheckAllCheckBoxes(check)
  10. {
  11. for(i = 0; i < document.forms[0].elements.length; i++)
  12. {
  13.  var elm = document.forms[0].elements[i];
  14.  if (elm.type == "checkbox" )
  15.  {
  16.   if(!elm.disabled)
  17.   {
  18.    elm.checked = check;
  19.   }
  20.  }
  21. }
  22. }

n°1378302
Cat Mary
Posté le 31-05-2006 à 17:38:23  profilanswer
 

Merci beaucoup Pikti, ça marche nickel !

n°1378304
pikti
I’ve done worse
Posté le 31-05-2006 à 17:40:50  profilanswer
 

de rien, si tes checkbox sont toujours enabled (ou si tu t'en fiches ou veux qu'elles soient cochées/décochées quand même), vire le test

Code :
  1. if(!elm.disabled)           
  2. {
  3. }


 
 
bon, et faut pas avoir 15000 éléments sur la page avec un script comme ça.


Message édité par pikti le 31-05-2006 à 17:41:35
n°1378306
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-05-2006 à 17:43:36  profilanswer
 

oui je devais être bien fatigué quand j'ai ecrit ça, y'a plein de boulettes :o

  • foreach existe pas en js
  • getAttribute c'est une fonction il faut donc remplacer les crochets par des parenthèses
Code :
  1. function checkAll(){
  2.   checkflag = ! checkflag; //on inverse le flag
  3.   var inpNodes = document.getElementsByTagName('input');
  4.   for(var i=0; i< inpNodes.length;i++){
  5.     if ( inpNodes[i].getAttribute('type') == 'checkbox'){
  6.       inpNodes[i].checked = checkflag;
  7.     }
  8.   }
  9. }


 
La solution de pikti est tout à fait correcte mais "oldschool", l'usage de form et elements a tendance à être eviter au profit des fonctions DOM ( getElmenents etc).

mood
Publicité
Posté le 31-05-2006 à 17:43:36  profilanswer
 

n°1378308
Cat Mary
Posté le 31-05-2006 à 17:44:02  profilanswer
 

ok, merci pour ton aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Cocher toutes les cases sachant qu'elles ont un nom différent

 

Sujets relatifs
Faire un UPGRADE dans une table avec une case à cocherCHECKED et case à cocher : liste à partir d'une table [RESOLU]
case a cocher --> directioncase à cocher et champ ENUM(table) [RESOLU]
Tableau avec des cases de bordure 1pxBloquer une case à cocher
Tris différent sur une listecocher automatiquement 1 checkbox en fonction des données d'1 listbox
bordure juste pour qq cases d'un tableauproblème case à cocher et bouton radio
Plus de sujets relatifs à : Cocher toutes les cases sachant qu'elles ont un nom différent


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR