Gérer des checkboxes - cocher et décocher automatiquement [Résolu]

Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
- - Dernière réponse : TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
- 21 mai 2008 à 20:59
Salut à Tous!!

Un petit problème! comme d'hab'! J'espère que vous pourrez m'aider!!!

En fait, j'ai une liste de modules que des étudiants doivent sélectionner grâce à une checkbox. Le problème est que certains modules nécessitent l'apprentissage d'un autre module en même temps! Par exemple, si vous voulez prendre le module Géométrie, il faudra prendre le module Maths! Mais il vous est possible de prendre le module Maths sans prendre le module Géométrie! (j'espère que vous avez compris!)
Donc pour gérer ce problème de co-modules, avec une fonction javascript, si je clique sur Géométrie, Maths se coche automatiquement! Mais je n'arrive pas à faire le contraire, c'est à dire au moment au je décoche Maths (en supposant que Géométrie soit coché préalablement), Géométrie doit se décocher!!

Voici le code que j'ai utilisé pour gérer le clique sur Géométrie :  (Cette fonction marche!)
function check_comod(fils,pere){
    if(document.getElementById(fils).checked){
        document.getElementById(pere).checked=true;
    }else{
        document.getElementById(pere).checked=false;
    }
}
Voici le code j'ai utilisé pour gérer le "décochage" de Géométrie lorsqu'on clique sur Mathématiques : (Cette fonction ne marche pas! Peut-être des interférences avec la fonction check_comod ???)function uncheck(dad,son){
    if(document.getElementById(dad).checked==false){
        document.getElementById(son).checked=false;
    }
}
J'avais pensais de désactiver la checkbox de maths lorsque Géométrie est coché! Tout ça grâce à un disabled mais la valeur d'une checkbox disabled  n'est pas récupérée lors d'un submit en PHP! Hors, j'en ai besoin pour savoir quels modules ont été cochés!
Donc si quelqu'un pouvait m'aider SVP! Javascript ou PHP! Peu importe, tant que ça marche!!!! Merci!

"C'est quand on a raison qu'il est difficile de prouver qu'on n'a pas tort." de Pierre Dac
Afficher la suite 

Votre réponse

20/28 réponses

Meilleure réponse
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
3
Merci
BONNE NOUVELLE!!! J'ai trouvé la réponse moi même! enfin, faut dire que vous m'avez un peu orienté un peu!!!

Donc en fait le problème, c'est que j'avais dans la liste des enfants à décocher que je parcourais dans une boucle FOR, certaines checkboxes n'étaient pas définies, donc ma boucle FOR s'arrêtaient lorsque elle rencontrait une checkbox inexistante. Car en fait, dans ma liste d'enfants à décocher, j'en affiche plus que prévu, à cause de ma requête sql!
Donc, pour passer les checkboxes dont l'id est inexistant dans le formulaire, il faut vérifier la condition suivant (en rouge) :

function checkLink(_id1, _id2){
    if(_id2!=''){
        var tableau=_id2.split('_');
        for (var i=0; i<tableau.length; i++) {
            if(document.getElementById(tableau[i]) != null){
                if(document.getElementById(_id1).checked==true) document.getElementById(tableau[i]).checked=true;
            }
        }
    }
}
function casB(_id1, _id2){
    if (!document.getElementById(_id1).checked){
        var tableau=_id2.split('_');
        for (var i=0; i<tableau.length; i++) {
            if(document.getElementById(tableau[i]) != null){
            document.getElementById(tableau[i]).checked = false;
            }
        }
    }
}

Cela ne provoque donc plus l'arrêt de la boucle, et parcourt toute la liste des enfants! de même pour les parents!!

Voilà, vu que j'ai posté et résolu le problème, on pourrait quasiment dire que je viens de poster un tuto (avec la participation de Zobibol & Bultez!)

Problème Résolu! J'espère que ça aidera certains! Allez, ciao!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 90 internautes nous ont dit merci ce mois-ci

Commenter la réponse de TheArrow
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
Bonjour,

    tu dois cocher/décocher l'autre en fonction de l'un ?
    pas tout saisi....
       mais ch'tiot exemple, que tu devrais pouvoir adapter....

<script>
    function coche(em,re)
    {    document.getElementById(re).checked=em.checked;
    }
</script>

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
je viens ( un peu ! ) de percuter !
tu dois vouloir faire l'inverse ? non ?
    donc : document.getElementById(re).checked=!em.checked;
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
0
Merci
Bonjour, en m'appuyant sur ce qu'a fait Bultez (t'inquiète je pèse pas lourds )
j'ai obtenu ça :
    function coche(em,re)
    {    document.getElementById(re).checked=em.checked;
    }
    function checkMath(em, re){
            if ( !em.checked){
                document.getElementById(re).checked = false;
            }
    }
        </script>
       
            <label >géometrie</label>
       
            <label >Math</label>
On coche géométrie, ça coche math
on décoche math, ça décoche géométrie...

[o-_-o]
Commenter la réponse de Zobibol
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Salut à toi Bultez! Merci d'avoir fait aussi vite!

En fait pour géométrie, si je le coche, mathématiques doit se cocher automatiquement! Et si je décoche géométrie maths doit se décocher! Mais ça, pour le moment je sais faire!
Ce que je n'arrive pas à faire c'est ça :
Si géométrie et maths sont cochés et je souhaite décocher maths, il faudra que géométrie se décoche en même temps car tu ne peux pas apprendre la géométrie si tu ne fais pas de maths en même temps!

"C'est quand on a raison qu'il est difficile de prouver qu'on n'a pas tort." de Pierre Dac
Commenter la réponse de TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Attendez, je vais tester ce que vous m'avez donné!!
Commenter la réponse de TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Désolé les gars ça ne marche toujours pas!!! je pense que ça doit être dû à des interférences entre les fonctions!

Parce qu'en fait, pour le cas de la géographie et des maths ça fonctionne! mais la géométrie et les maths ça marche pas!!!!

(NB: pour apprendre la géographie, tu dois apprendre les maths! comme pour la géométrie!!!)

Je sais, peut-être que vous connaissez un autre moyen qu'une fonction javascript??? en PHP, ça me semble difficile!! et après, mes compétences en langage info se limite à ça! Dsl!
Commenter la réponse de TheArrow
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
0
Merci
En même temps, ça fait longtemps que j'ai appris les maths ;o)

 function coche(em,re)
    {  
            if (em.checked){
                document.getElementById(re).checked=true;
            }
    }
    function checkMath(em, re){
            if ( !em.checked){
                document.getElementById(re).checked = false;
            }
    }
        </script>
       
            <label >géometrie</label>
       
            <label >Math</label>

et cela irait-il ?

[o-_-o]
Commenter la réponse de Zobibol
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
lol! nan mais ce sont pas les vrais noms!! C'est juste que les noms de modules sont des chiffres et des lettres donc c'est plus facile de résonner avec maths et géométrie! lol! C'est pour des gars de master quand ça!! lol

bon j'essaye je te dis quoi!
Commenter la réponse de TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Désolé de te dire ça Zobibol, mais ton code ne marche pas du tout! mon premier code marchait mieux! sauf que des fois, il plantait!

dans ton code, ce qui ne va pas c'est ça :
if ( ! document.getElementById(em).checked){
                document.getElementById(re).checked = false;
 }
Commenter la réponse de TheArrow
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
0
Merci
j'ai beau relire mon code (5fois), j'ai pas trouvé la ligne
if ( ! document.getElementById(em).checked){
                document.getElementById(re).checked = false;
 }

????

[o-_-o]
Commenter la réponse de Zobibol
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Voilà :



    function coche(em,re)
    {    document.getElementById(re).checked=em.checked;
    }
    function checkMath(em, re){
            if ( !em.checked){
                document.getElementById(re).checked = false;
            }
    }

>>>>>
function coche(em,re) {
        document.getElementById(re).checked=em.checked;
      }
      function checkMath(em, re){
               if ( !
document.getElementById(
em).checked){
                    document.getElementById(re).checked = false;
               }
      }




       
Commenter la réponse de TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Ouais bon ce truc commence à m'énerver donc j'ai essayé de trouver un autre moyen! Désolé je peux pas encore l'expliquer pour le moment car c'est assez compliqué! Si vous voulez je vous l'expliquerai quand il sera fini (si il fonctionne!!!)

Donc maintenant j'aurais besoin de savoir quel est l'évènement qui permet de faire agir une fonction javascript lorsqu'un champs de type hidden est modifié! Mais attention la valeur de ce champs est modifiée par une autre fonction javascript! La modification ne se fait pas à la main (normal, le champs est caché! comment voulez-vous le modifier?)

Je sais qu'il existe onChange mais ça ne fonctionne pas! ???

Merci de votre aide...
Commenter la réponse de TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Bon, dsl si je réponds pas a vos messages tout de suite! je re tout à l'heure! mais si vous avez des réponses à ma question, n'hésitez pas! a tout'!
Commenter la réponse de TheArrow
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
normalement ut as tout pour faire....
on tourne autour, mais on ne saisit ( enfin moi ! ) ce que tu veux...
peut-on expliquer simplement ?

2 chekbox "A1" et "B2"

si on coche A1 que fait-on ?   si on décoche A1 : que fait-on ? 
    et curieusement, j'ai les mêmes questions pour B2 :
si on coche B2 que fait-on ?   si on décoche B2 : que fait-on ? 

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Re Bultez!!!

Donc si tu coches A1, B1 doit se cocher automatiquement.
    Si tu décoches A1, B1 doit se décocher automatiquement.

Ensuite, pour B2:
Si tu coches B2, rien ne se passe sur A1 (si A1 était coché, il reste coché; s'il était décoché, il reste décoché!)
Si tu décoches B2, A1 est automatiquement décoché! (si A1 n'était pas coché, rien ne se passe alors!) >>> Etape que je n'arrive pas à faire!

Voilà, j'espère que c'est plus clair! Merci de m'aider!
Commenter la réponse de TheArrow
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
Excusez-moi, pour mon dernier post, B1 et B2 sont les mêmes, c'est juste un erreur de frappe!
Voici la version corrigée si vous voulez:

Donc si tu coches A1, B2 doit se cocher automatiquement.
    Si tu décoches A1, B2 doit se décocher automatiquement.

Ensuite, pour B2:
Si tu coches B2, rien ne se passe sur A1 (si A1 était coché, il reste coché; s'il était décoché, il reste décoché!)
Si tu décoches B2, A1 est automatiquement décoché! (si A1 n'était pas coché, rien ne se passe alors!) >>> Etape que je n'arrive pas à faire!

Voilà, j'espère que c'est plus clair! Merci de m'aider!
Commenter la réponse de TheArrow
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
42
0
Merci
    <script>
        function casA(em,re)
        //si tu coches A1, B1 doit se cocher automatiquement.
        //Si tu décoches A1, B1 doit se décocher automatiquement.
        {    document.getElementById(re).checked=em.checked;    }
        function casB(em,re)
        //si tu coches B2, rien ne se passe sur A1
        //Si tu décoches B2, A1 est automatiquement décoché!       
        {    if ( !em.checked )
            {    document.getElementById(re).checked=false;    }
        }
    </script>
    A1
    B2

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Dernière intervention
20 février 2017
6
0
Merci
ça ressemble fortement à ce que j'avais mis dans mon message de 13:16:15, mais il semblerait que ce soit pas ça, s'il était possible de décocher (à ce propos) tous les messages acceptés, histoire de voir ou l'on en est, parce que la, actuellement, il y a 1200 réponses acceptées et ça ne marche toujours pas !

[o-_-o]
Commenter la réponse de Zobibol
Messages postés
21
Date d'inscription
mercredi 16 avril 2008
Dernière intervention
4 décembre 2008
0
Merci
oups dsl pour les réponses acceptées!!! c'est moi! je croyais que ça voulais dire qu'on avait lu le msg!! j'vais les enlever!! (j'suis nouveau sur codessources!! dsl)
Bultez, j'essaie ton code!
Commenter la réponse de TheArrow

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.