Cocher une liste de checkbox.

Invité
Invité n'ayant pas de compte PHPfrance

07 nov. 2007, 13:14

Bonjour,

j'ai recuperer un script sur internet qui me permet de cocher toute les cases a cocher :

Code : Tout sélectionner

<!-- Begin var checkflag = "false"; function check(field) { if (checkflag == "false") { for (i = 0; i < field.length; i++) { field[i].checked = true;} checkflag = "true"; return "Tout décocher"; } else { for (i = 0; i < field.length; i++) { field[i].checked = false; } checkflag = "false"; return "Tout cocher"; } } // End -->
Et j'utilise le code html suivant pour le formulaire :

Code : Tout sélectionner

<form name="form"> while($data = mysql_fetch_array($res)) { ?> <input type="checkbox" name="list[]" id="list" value="<?php echo $data['titi]; ?>"><a href=\"../_medias/doc/programme/<?php echo $data['tata']; ?>"><?php echo $data['toto']; ?></a><br /> <?php } ?>
Pour valider le formulaire :

Code : Tout sélectionner

<input type="button" value="Tout cocher" onClick="check(getElementByName('list[]'))">[/quote]
Une fois que le formulaire est envoyer avec le nom list[] et qu'il est recuperer par le getElementByName il devrait cocher toute les cases avec javascript.

Ca ne fonctionne que si je retire les [] pour faire mon tableau, ce qui est genant par la suite, pour traiter les données avec php.

Après pas mal de lectures sur les forum je reste un peu bloqué la dessus, j'ai retrouver des gens qui ont eut le même soucis ici :

http://www.developpez.net/forums/showthread.php?t=26897

(un lien sur le forum de DV patapay plz)

il semble que pour lui le code fonctionne mais je n'ai toujours pas les cases qui se cochent.

Une idée ?

Mammouth du PHP | 965 Messages

07 nov. 2007, 13:15

Perdu ma session entre temps :oops:

EDIT : avec cette exemple non plus pas de reponses :

Code : Tout sélectionner

onClick="check(this.form.element['list[]'])"

Eléphant du PHP | 445 Messages

07 nov. 2007, 15:35

Donnes un ID à chaque chackbox et utilise une fonction qui les cohera toutes avec document.getelementbyid() au lieu de document.getelementbyname().

Mammouth du PHP | 965 Messages

07 nov. 2007, 15:42

Donnes un ID à chaque chackbox et utilise une fonction qui les cohera toutes avec document.getelementbyid() au lieu de document.getelementbyname().
en utilisant :
<input type="checkbox" name="list[]" id="list">
et

onClick="check(getElementById('list'))"
ou
onClick="check(this.form.element('list'))"
il ne me retourne aucune erreur JS mais il ne coche rien non plus :(

d0m
Mammouth du PHP | 1141 Messages

08 nov. 2007, 15:11

j'avais le même problème que toi et en attendant une solution propre, j'ai utilisé ce script :

Code : Tout sélectionner

function selectionnerTout(formulaire){ //récupération de toutes elements input lesInputs = document.getElementsByTagName('input'); //parcours des inputs for(var i=0; i<lesInputs.length; i++) { //si l'input est une case à cocher et que ce n'est pas la case "tout cocher/décocher" if((lesInputs[i].getAttribute('type')=="checkbox")&&(!(lesInputs[i].id=="tousaucun"))) { //on met la valeur de la case égale à celle de la case "tout cocher/décocher" lesInputs[i].checked=formulaire.tousaucun.checked; } } }

Mammouth du PHP | 965 Messages

08 nov. 2007, 17:08

j'avais le même problème que toi et en attendant une solution propre, j'ai utilisé ce script :

Code : Tout sélectionner

function selectionnerTout(formulaire){ //récupération de toutes elements input lesInputs = document.getElementsByTagName('input'); //parcours des inputs for(var i=0; i<lesInputs.length; i++) { //si l'input est une case à cocher et que ce n'est pas la case "tout cocher/décocher" if((lesInputs[i].getAttribute('type')=="checkbox")&&(!(lesInputs[i].id=="tousaucun"))) { //on met la valeur de la case égale à celle de la case "tout cocher/décocher" lesInputs[i].checked=formulaire.tousaucun.checked; } } }
j'utilise ta fonction et avec ca j'ai mis en fin de script

Code : Tout sélectionner

<input type="button" id="tousaucun" value="tout cocher" onClick="selectionnerTout(this.form)">
mais rien ne se passe j'ai pourtant rajouter l'id "tousaucun" a l'input final, mais ca ne change rien, pourtant il me semble que tout est correct avec ton script.

d0m
Mammouth du PHP | 1141 Messages

08 nov. 2007, 17:49

j'ai pourtant rajouter l'id "tousaucun" a l'input final
Ce n'est pas seulement son identifiant ID, c'est son identifiant NAME aussi :

Code : Tout sélectionner

formulaire.tousaucun.checked

Code : Tout sélectionner

<input type="button" id="tousaucun" name="tousaucun" value="tout cocher" onClick="selectionnerTout(this.form)">

Mammouth du PHP | 965 Messages

08 nov. 2007, 18:36

j'ai pourtant rajouter l'id "tousaucun" a l'input final
Ce n'est pas seulement son identifiant ID, c'est son identifiant NAME aussi :

Code : Tout sélectionner

formulaire.tousaucun.checked

Code : Tout sélectionner

<input type="button" id="tousaucun" name="tousaucun" value="tout cocher" onClick="selectionnerTout(this.form)">
Ok j'ai bien recopier ce boutton mais il ne m'affiche aucune erreur de javascript et il semble ne pas changer de valeur sur le boutton.

Mammouth du PHP | 965 Messages

08 nov. 2007, 18:40

j'utilise toujours :
while($data = mysql_fetch_array($res))
{
?>
<input type="checkbox" name="list[]" id="list" value="<?php echo $data['Id']; ?>"><a href=\"../_medias/doc/programme/<?php echo $data['Chemin']; ?>"><?php echo $data['Libelle']; ?></a><br />
<?php
}	
pour faire mes checkbox au cas ou ca peut aider.

merci pour ton aide d0m

d0m
Mammouth du PHP | 1141 Messages

09 nov. 2007, 09:22

chez moi pourtant ca marche sans problème.
Je ne sais pas si ca peut venir de ça mais tu déclares tous tes checkbox avec le même ID.
<input type="checkbox" name="list[]" id="list" ... >
Tous les élements d'un document doivent avoir une ID différente les uns des autres.

Mammouth du PHP | 965 Messages

09 nov. 2007, 10:59

chez moi pourtant ca marche sans problème.
Je ne sais pas si ca peut venir de ça mais tu déclares tous tes checkbox avec le même ID.
<input type="checkbox" name="list[]" id="list" ... >
Tous les élements d'un document doivent avoir une ID différente les uns des autres.
en utilisant le systeme des id differentes avec
id="list<?php echo $i++; ?>"
il ne fonctionne toujours pas.

d0m
Mammouth du PHP | 1141 Messages

09 nov. 2007, 12:00

as tu essaié de debugguer avec des alert() dans la fonction javascript?

Mammouth du PHP | 965 Messages

09 nov. 2007, 12:27

as tu essaié de debugguer avec des alert() dans la fonction javascript?
En effet tu utilise un checkbox qui coche tout les autres plutôt qu'un button j'avais pas fait attention, je vais essayer de modif le script pour faire passer un button.

Merci pour ton aide !

Mammouth du PHP | 965 Messages

09 nov. 2007, 12:35

La version pour une boite button pour le nom :
function selectionnerTout(formulaire){
  //récupération de toutes elements input
  lesInputs = document.getElementsByTagName('input');
  //parcours des inputs
  for(var i=0; i<lesInputs.length; i++) {
    //si l'input est une case à cocher et que ce n'est pas la case "tout cocher/décocher"
    if(!(lesInputs[i].id=="tousaucun")) {
      //on met la valeur de la case égale à celle de la case "tout cocher/décocher"
      lesInputs[i].checked=true;
    }
  }
} 
Merci je met résolu.