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 :

décocher une checkbox en cochant une autre checkbox


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut décocher une checkbox en cochant une autre checkbox
    Bonjour,
    Je poursuis mes pérégrinations dans l'apprentissage du javascript, et il se trouve que je viens de trouver une petite fonction très exotique dont le résultat est tout aussi ironique.

    Le but initial est simple :
    J'ai 5 checkbox.
    Une est cochée par défaut.
    Si jamais, ô grand jamais, le visiteur clique une des 4 autres, celle qui est cochée par défaut se décoche d'un air majestueux, l'air de dire "si c'est comme ça, je me décoche".

    J'ai trouvé le code suivant :

    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
     
    <script type="text/javascript"> 
    function ta() { 
     for (i=0; i<formu.length; i++) { 
     mesbox = formu.elements[i]; 
     mesbox.checked = formu.tousaucuns.checked; 
     } 
    } 
    </script
    </head>
     
    <body>
    <form action="#" method="post" name="formu"> 
     <input type="checkbox" name="tousaucuns" value="tous/aucuns" onclick="ta();"> tous/aucuns<br> 
     <input type="checkbox" name="check1" value="1"> 1<br> 
     <input type="checkbox" name="check2" value="2"> 2<br> 
     <input type="checkbox" name="check3" value="1"> 3<br> 
     <input type="checkbox" name="check4" value="2"> 4<br> 
     <input type="checkbox" name="check5" value="1"> 5<br> 
     
    </form>
    Mais ce code coche ou décoche tout ou rien, sans aucun compromis ni discussions, ce qui est pour le moins irritant vous le reconnaîtrez.


    Donc, pendant que je lis un PDF sur javascript trouvé sur développez, je me suis dit que si un magicien du web passait par là il pourrait faire apparaitre cette fonction magique qui me rendra aussi surement riche que Mr Gates.

    Merci d'avance
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben met des radios plutot, c est le comportement des radios de faire ca si elles ont le meme name.

    des check c est fais pour offrir un choix multiple alors que les radios c est un choix unique
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Merci pour ta réponse siddh

    En fait je veux des checkbox pour effectivement faire un choix multiple.

    Mais comme je l'ai dit, je cherche le code pour en avoir 5 dont une cochée par défaut, et si l'on coche une (ou plus) des 4 autres, celle cochée par défaut se décoche.

    C'est tout mais c'est beaucoup pour un misérable débutant.
    Ca ne fait que 2 jours que je survole javascript et mon projet est pour la fin du mois (c'est essentiellement du php/mysql, je ne pensais pas avoir besoin de javascript, mais je m'apperçois que son utilisation peut parfois simplifier les choses).
    C'est pas parce que j'ai tort que vous avez raison.

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    mwé le truc c est que un code comme ca t empechera d avoir une selection multiple puisque c est un code qui decochera les autres quand tu la coche[/code]
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  5. #5
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Tien, voici un p'tit code qui pourrait t'aider...
    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
    <html>
    <head>
        <script language="javascript">
            function ta(){
                var checkAll = document.getElementById('tousaucuns');
                var arrCheckGroup = document.getElementsByName('Group1');
                for(iLoop=0;iLoop<arrCheckGroup.length;iLoop++)
                    arrCheckGroup[iLoop].checked = checkAll.checked;
            }
            function checkAll(obj){
                var checkAll = document.getElementById('tousaucuns');
     
                if(checkAll.checked == true && obj.checked==false)
                    checkAll.checked = false;
                else if(obj.checked==true){
                    var arrCheckGroup = document.getElementsByName('Group1');
                    var allChecked = true;
     
                    for(iLoop=0;iLoop<arrCheckGroup.length;iLoop++)
                        if(arrCheckGroup[iLoop].checked == false){
                            allChecked = false;
                            break;
                        }
                    checkAll.checked = allChecked;
                }
            }
        </script>
    </head>
    <body>
        <form> 
            <input type="checkbox" name="tousaucuns" value="tous/aucuns" onclick="ta();" ID="tousaucuns"> tous/aucuns<br> 
            <input type="checkbox" name="Group1" value="1" onclick="checkAll(this);"> 1<br> 
            <input type="checkbox" name="Group1" value="2" onclick="checkAll(this);"> 2<br> 
            <input type="checkbox" name="Group1" value="1" onclick="checkAll(this);"> 3<br> 
            <input type="checkbox" name="Group1" value="2" onclick="checkAll(this);"> 4<br> 
            <input type="checkbox" name="Group1" value="1" onclick="checkAll(this);"> 5<br> 
        </form> 
     
    </body>
    </html>
    Bonne chance
    - Capt.

    Proverbe Shadok:
    S'il n'y a pas de solutions, il n'y a pas de problèmes

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Je n'ai pas du bien m'expliquer.

    J'ai 4 catégorie pour effectuer la recherche et 5 checbox.

    Si la première checkbox est cochée, cela signifie : on recherche dans les 4 catégories.

    Si une ou plusieurs autres checkbox sont cochées, fatalement la première se décoche puisque l'on ne va pas chercher dans une ou plusieurs catégorie + toute à la fois, c'est absurde.
    C'est pas parce que j'ai tort que vous avez raison.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    ouah, j'étais content en voyant le code de Capitaine Flamme mais il s'avère qu'il produit la même chose que le code que j'ai placé dans le premier post...

    Enfin c'est l'intention qui compte hein
    C'est pas parce que j'ai tort que vous avez raison.

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ok
    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
    <script type="text/javascript"> 
    function ta() { 
      for (i=0; i<formu.length; i++) { 
     mesbox = formu.elements[i]; 
     mesbox.checked = formu.tousaucuns.checked; 
     } 
    } 
    function decoche(){
    var lacheck = document.getElementById("defcheck");
     if(lacheck.checked)
          lacheck.checked = false; 
     
    }
    </script 
    </head> 
     
    <body> 
    <form action="#" method="post" name="formu"> 
     <input type="checkbox" name="tousaucuns" id="defcheck" value="tous/aucuns" checked="checked" onclick="ta()"> tous/aucuns<br> 
     <input type="checkbox" name="check1" value="1" onclick="decoche()"> 1<br> 
     <input type="checkbox" name="check2" value="2" onclick="decoche()"> 2<br> 
     <input type="checkbox" name="check3" value="1" onclick="decoche()"> 3<br> 
     <input type="checkbox" name="check4" value="2" onclick="decoche()"> 4<br> 
     <input type="checkbox" name="check5" value="1" onclick="decoche()"> 5<br> 
     
    </form>
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    heee... C'Est quoi qui se passe quand tu places mon code?
    - Capt.

    Proverbe Shadok:
    S'il n'y a pas de solutions, il n'y a pas de problèmes

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    j ai edité pardon ^^
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  11. #11
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Bâ... Je comprend pas ce que tu veux faire!!!
    - Capt.

    Proverbe Shadok:
    S'il n'y a pas de solutions, il n'y a pas de problèmes

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Super, ça fonctionne merci Siddh !

    Par contre en l'utilisant je me rend compte d'un problème.
    Une fois que l'utilisateur à coché une ou plusieurs cases, la première se décoche, c'est bon.

    Maintenant ce qui serait très bien, ce serait que s'il recoche la première, celle(s) qu'il a coché(s) se décoche(nt).

    Parce que s'il redécide de faire la recherche dans toute les catégories autant cliquer la checkbox initiale plutot que de décocher celles déjà cochée...
    C'est pas parce que j'ai tort que vous avez raison.

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    regarde, j ai edité le code, je sais pas quelle version tu as
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  14. #14
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Ok, tu veux garder la sélection de l'utilisateur... Mais, c'est un commentaire, tu trouves pas illogique d'avoir un check "Tous" qui est coché et de ne pas avoir toutes les checks associés cochés?

    C'est vraiment mon opinion mais il me semble que ça fait pas très intuitif...
    - Capt.

    Proverbe Shadok:
    S'il n'y a pas de solutions, il n'y a pas de problèmes

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Citation Envoyé par Capt. Flame
    document.getElementsByName
    c'est pas standard ca non ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  16. #16
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oué c est vrai que j ai mis coché par defaut sans cocher les autres

    faut enlever le checked="checked" ou le rajouter sur les autres
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  17. #17
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    - Capt.

    Proverbe Shadok:
    S'il n'y a pas de solutions, il n'y a pas de problèmes

  18. #18
    Membre habitué Avatar de Capt. Flame
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 196
    Points
    196
    Par défaut
    Et malgré ce qu'ils disent, c'est fonctionnel sous IE
    - Capt.

    Proverbe Shadok:
    S'il n'y a pas de solutions, il n'y a pas de problèmes

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Non je trouve que c'est bien, simplement si on recoche le checked "toutes les catégories" il faut que les checked cochées se décochent.

    C'est soit la case "toute".
    Soit une ou plusieurs cases précises.

    Imaginez qu'il y a 50 checbox qu'est ce qui se passe ?
    j'ai 50 cases cochées par défaut (douteux déjà), je décoche la première pour les décocher toutes, puis je recoche les bonnes : 1 clics plus les clics pour choisir.
    Je veux maintenant rechercher dans toutes les catégories, et je reclique sur la checkbox "toutes les catégories" et hop elles se recochent toute.

    Je trouve plus simple d'avoir une case qui dit "toutes les catégories".
    Si on veut une ou plusieurs catégories ont clique la ou les checbox (ce qui décoche la case "toutes les catégories") : on économise un clique pour tout décocher.

    Si ensuite on veut rechercher dans toutes les catégories on clique la case "toutes les catégories" ce qui décochent celle(s) cochée(s).
    Il est inutile qu'elles soient toutes cochées pour dire que l'on va rechercher dans toutes les catégories, puisque de fait c'est déjà toutes les catégories qui sont sélectionnées en une seule case.
    C'est pas parce que j'ai tort que vous avez raison.

  20. #20
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    bha apres c est ton appli tu la gères comme tu veux

    penses a mettre si ca te va
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  2. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  3. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  4. Copier une table Access d'une base de données à une autre
    Par Marie S. dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/05/2007, 12h09
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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