TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDernière intervention 4 décembre 2008
-
21 mai 2008 à 12:35
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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
A voir également:
Gérer des checkboxes - cocher et décocher automatiquement
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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!
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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]
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 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]
Vous n’avez pas trouvé la réponse que vous recherchez ?
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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!
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 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>
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 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;
}
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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! ???
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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 ?
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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!
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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!
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 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 !
TheArrow
Messages postés21Date d'inscriptionmercredi 16 avril 2008StatutMembreDerniè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!