Gérer des checkboxes - cocher et décocher automatiquement

Résolu
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008 - 21 mai 2008 à 12:35
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre 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

28 réponses

TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 20:59
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!
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 12:47
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]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 12:58
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]
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 mai 2008 à 13:16
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]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 13:17
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
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 13:21
Attendez, je vais tester ce que vous m'avez donné!!
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 13:29
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!
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 mai 2008 à 13:33
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]
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 13:35
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!
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 13:43
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;
 }
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 mai 2008 à 13:48
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]
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 13:55
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;
               }
      }




       
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 14:11
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...
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 14:17
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'!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 14:22
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]
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 15:02
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!
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 15:36
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!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 mai 2008 à 15:55
    <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]
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
21 mai 2008 à 16:01
ç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]
0
TheArrow Messages postés 21 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 4 décembre 2008
21 mai 2008 à 16:07
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!
0
Rejoignez-nous