IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[Grand Débutant] Un checkbox pour cocher tous les checkbox


Sujet :

JavaScript

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Points : 170
    Points
    170
    Par défaut [Grand Débutant] Un checkbox pour cocher tous les checkbox
    Bonjour,

    J'ai une table <table> ayant comme premier élément de chaque ligne <tr>, donc comme premier <td> un checkbox. Par la suite sur cette ligne <tr> je retrouve plusieurs cellule <td> qui peuvent contenir à leur tour des checkbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <table>
      <tr>
         <td><input type="checkbox"...></td>
         .....
         <td><input type="checkbox"...></td>
        ....
      </tr>
    </table>
    Dans l'entête de cette table, la première cellule <th> contient un checkbox qui lorsqu'il est coché, sélectionne uniquement toutes les premières checkbox dans le premier <td>. Inversement, lorsque je décoche le checkbox dans la cellule d'entête <th>, je décoche tous les checkbox qui sont cochés.

    Voilà, j'ai essayé d'être le plus claire possible, mais en fait visuellement c'est simple.

    Le problème est que je ne vois pas comment réaliser ce script. Ce qui m'ennuie est que je peux avoir N lignes <tr> donc N checkbox. J'ai récupéré ce script qui sélectionne TOUS les checkbox d'un formulaire, il ne me convient pas parceque je souhaite sélectionner seulement les checkbox dans la première colonnes de ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function checkall()
    {
    	// compte tous les éléments du formulaire en numérotant chronologiquement
    	temp = document.form_main_1.elements.length;
    	if (document.form_main_1.elements[0].checked)
    	{ // si la case est cochée
    		for (i=1; i < temp; i++)
    		{ // on coche toutes les autres
    			document.form_main_1.elements[i].checked=1;
    		}
    	}
    	else
    	{
    		for (i=1; i < temp; i++)
    		{ // on décoche tout
    			document.form_main_1.elements[i].checked=0;
    		}
    	}
    }
    J'ai bien pensé à utiliser getElementById mais étant donné que je peux avoir N checkbox je ne sais pas comment récupérer tous les id des checkbox.

    Si vous avez des idées je suis preneur, j'ai peur de partir dans un truc trop complexe. Merci d'avance.

    PS: j'effectue des recherches sur google pour l'instant sans résultats : comment récupérer tous les éléments portant le même nom et comment acceder de cette façon à ces éléments document.form_main_1.elements[0].checked ? Je cherche dans ce sens une solution à mon problème.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Points : 430
    Points
    430
    Par défaut
    Il faut construire tes id de tes checkbox de ta colonnede manière à avoir, le même nom d'id + un numéro d'index concaténé, ce qui te donnera la faculté de faire tourner une boucle sur le nombre de checkbox de ta première colonne.

    En gros écrire :

    checkbox.id="firstCol"+index;

    Après avec ton index final tu peux faire tourner ta boucle que tu utilises au dessus en travaillent sur les Ids

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    merci de consulter la FAQ ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    as-tu lu cette discussion ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 360
    Points : 170
    Points
    170
    Par défaut
    Grace aux tutos j'ai pu faire ce que je souhaitais.

    Au final, c'est la honte, le code est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function checkall()
    {
    	// compte tous les éléments du formulaire en numérotant chronologiquement
    	nb_checkbox = document.getElementsByName('checkbox').length;
     
    		for (i=1; i <= nb_checkbox; i++)
    		{ // on décoche tout
    			var chkbox = document.getElementById("chk_"+i);			
    			chkbox.checked = !chkbox.checked;
    		}
    }
    E.Bzz : Merci pour ton lien, il m'a permis de découvrir de nouvelles possibilités

    SpaceFrog : je consulte la faq mais à mon niveau le problème se situe lorsque je dois combiner plusieurs tips entre eux.

    Tuss : au final, ta solution était la mieux adapté pour moi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. checkbox qui coche tous les checkbox d'une table
    Par solarien dans le forum JSF
    Réponses: 4
    Dernier message: 19/09/2008, 08h05
  2. cocher tous les checkbox en meme temps et un peu de php
    Par logone dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/10/2007, 09h19
  3. Réponses: 4
    Dernier message: 29/03/2007, 19h39
  4. Réponses: 2
    Dernier message: 14/09/2006, 14h24
  5. [checkbox] Code pour cocher toutes les cases
    Par snakejl dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 02/06/2006, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo