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 :

Tableau checkbox en paramètre


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Tableau checkbox en paramètre
    Bonjour,

    Débutant en développement Web, je cherche actuellement le moyen de faire passer en paramètre d'une fonction javascript, un tableau de checkbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    ...
     
    <INPUT TYPE=CHECKBOX NAME="cb'.$cbgroup.'[]" VALUE="'. $retour[$i] .'" OnChange="checkall(cb'.$cbgroup.');" CHECKED />
     
    ...
     
    ?>
    Ainsi, je serait en mesure de faire le traitement souhaité depuis ma fonction javascript :

    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(gcheckbox) {			
     
    			temp = gcheckbox.length;
     
    			if (gcheckbox[0].checked) { 
    				// si la case est cochée
    				for (i=1; i < temp; i++) { 
    					// on coche toutes les autres
    					gcheckbox[i].checked=true;
    				}
    			}
    			else {
    				for (i=1; i < temp; i++) { 
    					// on décoche tout
    					gcheckbox[i].checked=false;
    				}
    			}
    		}
    Si quelqu'un avait une réponse... merci !!

  2. #2
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     OnChange="checkall(document.getElementsByName(\'cb'.$cbgroup.'\');"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse rapide, cependant, cela ne fonctionne pas. Peut-être cela vient de mes fonctions Javascript.

    Voici l'extrait de mon code :

    PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?
    ...
     
    <INPUT TYPE=CHECKBOX NAME="cb'.$cbgroup.'[]" VALUE="'. $retour[$i] .'" OnChange="checkall(document.getElementsByName(\'cb'.$cbgroup.'\');" CHECKED />
     
    ...
    ?>

    Javascript fonction 1 :
    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
     
    function checkall(groupcheckbox) {	
    			temp = groupcheckbox.length;			
    			if (groupcheckbox[0].checked) { 
    				// si la case est cochée
    				for (i=1; i < temp; i++) { 
    					// on coche toutes les autres
    					groupcheckbox[i].checked=true;
    				}
    			}
    			else {
    				for (i=1; i < temp; i++) { 
    					// on décoche tout
    					groupcheckbox[i].checked=false;
    				}
    			}
    		}
    Javascript fonction 2 :
    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
    20
     
    function checkone(groupcheckbox) {	
    			m=0; // initialisation du nombre de checkboxes cochées	
    			temp = groupcheckbox.length;
     
    			for (i=1; i < temp; i++) { 
    				if (groupcheckbox[i].checked) { 
    					// si la checkbox courante est cochée, on comptabilise
    					m++;
    				}
    			}
    			if ( m == (temp-1) ) {
    				// si toutes les checkboxes sont cochées, on coche la checkboxe principale
    				groupcheckbox[0].checked=true;
    			}
    			else {
    				// sinon on décoche la checkboxe principale
    				groupcheckbox[0].checked=false;
    			}
    		}
    Étant néophyte en matière de développement Javascript, je m'en remet à vous pour m'indiquer si vous percevez une erreur...

    Merci par avance !!

  4. #4
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    J'aime beaucoup les diagnostiques ce ce type:"cela ne fonctionne pas"
    Quel est le comportement ? message d'erreur ??

    Commence par mettre un alert en debut de fonction pour tester le length ...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ok, j'ai donc inséré une "alert" dans mes scripts, en début de fonction :

    Extrait du Code source de la page Web :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    function checkall(groupcheckbox) {	
    			alert("checkall : ");	
    			temp = groupcheckbox.length;	
     
    			if (groupcheckbox[0].checked) { 
    				// si la case est coch�e
    				for (i=1; i < temp; i++) { 
    					// on coche toutes les autres
    					groupcheckbox[i].checked=true;
    				}
    			}
    			else {
    				for (i=1; i < temp; i++) { 
    					// on d�coche tout
    					groupcheckbox[i].checked=false;
    				}
    			}
    		}
     
    function checkone(groupcheckbox) {
    			alert("checkone : ");
    			m=0; // initialisation du nombre de checkboxes coch�es	
    			temp = groupcheckbox.length;
     
    			for (i=1; i < temp; i++) { 
    				if (groupcheckbox[i].checked) { 
    					// si la checkbox courante est coch�e, on comptabilise
    					m++;
    				}
    			}
    			if ( m == (temp-1) ) {
    				// si toutes les checkboxes sont coch�es, on coche la checkboxe principale
    				groupcheckbox[0].checked=true;
    			}
    			else {
    				// sinon on d�coche la checkboxe principale
    				groupcheckbox[0].checked=false;
    			}
    		}
    Correction du dernier post, mes checkboxes respectent la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <INPUT TYPE=CHECKBOX NAME="cb'.$cbgroup.'[]" VALUE="'. $path .'" OnChange="checkall(document.getElementsByName(\'cb'.$cbgroup.'\');" CHECKED />
     
    et
     
    <INPUT TYPE=CHECKBOX NAME="cb'.$cbgroup.'[]" VALUE="'. $retour[$i] .'" OnChange="checkone(document.getElementsByName(\'cb'.$cbgroup.'\');" CHECKED />
    Le code source de la page Web qui en résulte est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <INPUT TYPE=CHECKBOX NAME="cb1[]" VALUE="1.3.6.1.2.1.2.2.1.1" OnChange="checkall(document.getElementsByName('cb1');" CHECKED />
     
    et
     
    <INPUT TYPE=CHECKBOX NAME="cb1[]" VALUE=" 1" OnChange="checkone(document.getElementsByName('cb1');" CHECKED />
     
    ainsi de suite pour chaque valeur de  $cbgroupe

    Toutefois, le comportement est le suivant :
    - Aucune réaction lors du clique sur une checkbox ( pas d'alert )
    - Aucune modification d'état de mes checkboxes


    En espérant est ainsi plus clair...

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour
    OnChange="checkall(document.getElementsByName(\'cb'.$cbgroup.'\');"
    ça ne doit pas être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnChange="checkall(document.getElementsByName(\'cb'.$cbgroup.'[]\');"

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour

    ça ne doit pas être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnChange="checkall(document.getElementsByName(\'cb'.$cbgroup.'[]\');"

    Ceci ne change absolument rien... aucune réaction !
    Comportement identique !!

  8. #8
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    il faudrait voir 'un coté le php et de l'autre le html généré

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    A force de copier-coller, je ne m'étais pas aperçu d'une erreur initiale qui est maintenant corrigée :

    Ce n'est pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OnClick="checkone(document.getElementsByName(\'cb'.$cbgroup.'\');"
    Mais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OnClick="checkone(document.getElementsByName(\'cb'.$cbgroup.'\'));"
    Finalement, j'ai modifié mon script pour obtenir la longueur de mon tableau de checkboxes :
    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
     
    	function checkall(groupcheckbox) {	
    		temp = groupcheckbox.length;	
    alert(temp);
    		if (groupcheckbox[0].checked) { 
    			// si la case est cochée
    			for (i=1; i < temp; i++) { 
    				// on coche toutes les autres
    				groupcheckbox[i].checked=true;
    			}
    		}
    		else {
    			for (i=1; i < temp; i++) { 
    				// on décoche tout
    				groupcheckbox[i].checked=false;
    			}
    		}
    	}
    Cette "alert" me renvoi alors : 0

    Je reviens donc sur mes positions en ajoutant le [] a mon passage de paramètre afin d'accentuer qu'il s'agit bien d'un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OnClick="checkone(document.getElementsByName(\'cb'.$cbgroup.'[]\'));"
    Enfin, l'"alert" me renvoi alors le bon nombre et ma page web présente le comportement souhaité !!

    Si cela peut aider certain... c'est avec les erreurs que l'on apprend!

    Merci tout de même à tous ceux qui m'ont aider a arriver a mon but !!

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

Discussions similaires

  1. passer un tableau 2D en paramètre de fonction
    Par akrobat dans le forum C++
    Réponses: 1
    Dernier message: 27/04/2006, 16h48
  2. [D7] passer un tableau dynamique en paramétre ?
    Par PhD13 dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2006, 18h09
  3. Passage de tableau dynamique en paramètre
    Par Didier L dans le forum Langage
    Réponses: 3
    Dernier message: 08/09/2005, 23h04
  4. Passage d'un tableau javascript en paramètres d'une URL
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 02/09/2005, 10h46
  5. Comment passer un tableau dynamique en paramètre ?
    Par Charette dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2005, 11h28

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