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 :

[checkbox] Vérifier si checkbox est cochée


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut [checkbox] Vérifier si checkbox est cochée
    Bonjour,

    Je tente de savoit si aucune de mes chekbox n'est cochée. Le nombre de checkbox étant variable.

    Voilà la syntaxe que j'utilise mais il y a un hic dans mon if, malheureusement, je ne vois pas d'ou ça vient. Si quelqu'un peut m'aider ce sera sympa.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function validation ()
    {
    	var test_nb = 0;
    	for (i = 1; i <= <? echo ($nb_cri); ?>; i++)
    	{
    		if (document.form.enreg.tab_add_cri[i].checked==false)
    		{
    			test_nb++;
    		}
    	}
    	alert ("test=" + test_nb);
    }
    Le nom de mon formulaire est enreg et je nomme mes checkbox comme suit : name="tab_add_cri[0]", name="tab_add_cri[1]" ...

    Puisque le nombre de checkbox n'est pas fixe, $nb_cri correspond au nombre de checkbox.

    Merci d'avance de votre aide.

  2. #2
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    Salut.

    Juste comme ça, tu expliques que tu nommes tes checkboxes
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    tab_add_cri[0 .. (n-1)]
    et que ta boucle for est écrite
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i = 1; i <= n ; i++) {...}

    Tu ne testes donc jamais la case tab_add[0] mais par contre, tu essayes systématiquement d'accéder à la case tab_add[n] ce qui risque d'entrainer un plantage du script.

    Tu n'as pas réellement besoin du paramètre PHP pour récupérer le nombre de cases, puisqu'en JavaScript, tu as la propriété length d'un tableau. Tu pourrais donc faire quelquechose comme :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function validation ()
    {
    	var test_nb = 0;
    	for (i = 0; i <= document.form.enreg.tab_add_cri.length ; i++)
    	{
    		if (document.form.enreg.tab_add_cri[i].checked==false)
    		{
    			test_nb++;
    		}
    	}
    	alert ("test=" + test_nb);
    }

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    soit, peut-être:
    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
    <form id="f" action="" onsubmit="return verif(this.elements['box[]'])" />
     
    <div>
    <input type="checkbox" name="box[]" value="box0" />truc<br />
    <input type="checkbox" name="box[]" value="box1" />truc<br />
    <input type="checkbox" name="box[]" value="box2" />truc<br />
    <input type="checkbox" name="box[]" value="box3" />truc<br />
    </div>
    <p>
    <input type="submit" />
    </p>
    </form>
     
    <script type="text/javascript">
     
     
    function verif(b){
    	for(i=0;i<b.length;i++){
    		if(b[i].checked==true){
    			return true
    		}
    	}
    	return false
    }
    </script>

  4. #4
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    à part le que j'aurais eu tendance à passer différemment :, mais dont je ne suis pas certain, je pense que ça devrait ressembler à ça ...

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    en fait, comme php reçoit un tableau "box", il est nécessaire de nommer les checkbox ainsi pour récupérer les données;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut
    Merci des réponses, je vais voir ce que je peux faire avec ça.
    Je vous tiens au courant.

  7. #7
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    Citation Envoyé par javatwister
    en fait, comme php reçoit un tableau "box", il est nécessaire de nommer les checkbox ainsi pour récupérer les données;
    je suis d'accord pour le nommage des checkboxes, mais c'était plus dans le script que je me posais la question. mais je n'en reste qu'au stade de la question... et de l'intuition

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut
    C'était sympa de répondre mais malheureusement rien ne marche.

    J'ai essayé de passer les deux syntaxes en argument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    onsubmit="javascript:validation (this.elements['critere']); return (false);"
    onsubmit="javascript:validation (this.elements['critere[]']); return (false);"
    J'ai changé le nom de mon tableau en me disant que les "_" pouvaient y faire quelque chose mais évidemment ça ne vient pas de ça.

    Avec toujours la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function validation (critere)
    {
    	var test_nb = 0;
    	for (i = 1; i <= critere.length; i++)
    	{
    		if (critere[i].checked==false)
    		{
    			test_nb++;
    		}
    	}
    	alert ("test=" + test_nb);
    }
    En fait c'est dès que j'utilise mon tableau critere que rien ne va plus.
    J'imagine que c'est au niveau syntaxique que se trouve l'erreur mais je ne vois pas où elle peut être.
    Si vous avez d'autres idées je suis preneur.

    Merci.

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    ce qui m'embête un peu, c'est que tu n'aies pas tenu compte des propositions de code html;

  10. #10
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut

    Je te propose une manière un peu différente pour consulter tes checkbox
    car le fait que le nom soit composé de crochets [] peut poser des problèmes
    de syntaxe.

    Ce que je fait dans ces cas là c'est de consulter tous les input (du document
    ou du formulaire) avec getElementsByTagName(...)

    Puis je test le type et le nom

    Dans ton cas cela pourrait ressembler à ceci pour savoir si une case
    au moins est cochée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function auMoinsUneCase(nom_du_groupe) {
      var champs = document.getElementsByTagName('input');
      for(var i=0;i<champs.length;i++) {
        var c = champs[i];
        if(c.type.toLowerCase()=='checkbox' && c.name==nom_du_groupe && c.checked) return true;
      }
      return false;
    }

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 124
    Par défaut
    Merci pour ces réponses.

    javatwister, j'ai essayé tous les codes qui m'ont été donnés. Mais comme je n'ai réussi à en faire marcher aucun, j'étais revenu au début, c'est à dire à ce que j'avais fait dans un premier temps.

    Le seul code qui ne fait pas d'erreur est celui de marcha mais il avec ce code, même quand je coche une case, ça ne le prend pas en copte, cela doit venir d'un problème de nom.

    Je dois faire autre chose d'urgent mais après je vous tiens au courant si je réussi quelque chose.

Discussions similaires

  1. [Débutant] Vérifier si checkbox d'un datagridview est cochée
    Par GaMi95 dans le forum C#
    Réponses: 9
    Dernier message: 29/01/2014, 16h02
  2. [XL-2003] Bloquer l'utilisation d'une checkbox si une autre est cochée
    Par xiungung dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2009, 15h36
  3. Vérifier si au moins une case est cochée dans checkbox
    Par pasc06 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 18/11/2008, 15h14
  4. Décocher une checkbox si une autre est coché
    Par Sieldev dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/07/2007, 13h11
  5. Vérifier si checkbox est cochée
    Par MYster dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/11/2005, 19h10

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