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 :

Un checkbox dans une autre checkbox, est-ce que ça marche ?


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 189
    Points : 79
    Points
    79
    Par défaut Un checkbox dans une autre checkbox, est-ce que ça marche ?
    Salut !! =)

    J'ai un petit souci sur un code, je trouve bizarre que mon système de checkbox marche d'un coté (version assez simple) et de l'autre pas du tout (un peu plus complexe avec un checkbox dans une autre) et le tout avec 3 fonctions totalement identique sauf au niveau des id bien évidement

    Bon le mieux c'est en montrant le code je pense :

    coté html :
    Code html : 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <div id="connect">    
                        <p>
                            <label for="connection">Connection</label>
                            <input type="checkbox" id="connection" name="connection">
                        </p>     
                        <div id="log">
                            <p>
                                <label for="pseudolog">Pseudo :</label>
                                <input type="text" name="pseudolog" id="pseudolog">
                            </p>
                            <p>
                                <label for="pass">Mot de passe :</label>
                                <input type="text" name="pass" id="pass">
                            </p>
                        </div>
                    </div>
                    <div id="regist">
                        <p>
                            <label for="new">Inscription</label>
                            <input type="checkbox" id="new" name="new">
                        </p>
                        <div id="newlog">
                            <form id="inscription" class="inscription" name="inscription" method="post">
                                <div id="inser">
                                    <p>
                                        <label for="pseudo">Pseudo :</label>
                                        <input type="text" id="pseudo" name="pseudo">
                                    </p>
                                    <p>
                                        <label for="mail">E-mail :</label>
                                        <input type="email" id="email" name="email">
                                    </p>
                                    <p>
                                        <label for="password">Mot de passe :</label>
                                        <input type="password" id="password" name="password">
                                    </p>
                                    <p>
                                        <label for="password">Confirmer mot de passe :</label>
                                        <input type="password" id="password" name="password">
                                    </p>
                                </div>
                                <div id="check">
                                    <p>
                                        <label for="join">Rejoindre la guilde Rage Fist</label>
                                        <input type="checkbox" id="join" name="join">
                                    </p>
                                        <div id="postule">
                                            <p>
                                                <label for="pseudoIG">Pseudo In Game :</label>
                                                <input type="text" name="pseudoIG" id="pseudoIG">
                                            </p>
                                            <p>
                                                <label for="motiv">Dites nous en un peu plus sur vous !</label>
                                                <textarea id="motiv" name="motiv"></textarea>
                                            </p>
                                        </div>
                                </div>
                            </form>
                        </div>
                </div>

    et le JS :

    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
    41
    42
    43
    44
    45
    46
    47
     
    function rejoindre() {
      document.getElementById('join').onclick = function(){ 
          if (document.getElementById('join').checked){ 
              document.getElementById('postule').style.display = "block";
          }else{
              document.getElementById('postule').style.display = "none";
    }
    };
      document.getElementById('postule').style.display = "none";
    };
     
    window.onload = function(){
        rejoindre()
    }
     
    function inscri() {
      document.getElementById('new').onclick = function(){ 
          if (document.getElementById('new').checked){ 
              document.getElementById('newlog').style.display = "block";
          }else{
              document.getElementById('newlog').style.display = "none";
    }
    };
      document.getElementById('newlog').style.display = "none";
    };
     
     
    window.onload = function(){
        inscri()
    }
     
    function co() {
      document.getElementById('connection').onclick = function(){ 
          if (document.getElementById('connection').checked){ 
              document.getElementById('log').style.display = "block";
          }else{
              document.getElementById('log').style.display = "none";
    }
    };
      document.getElementById('log').style.display = "none";
    };
     
     
    window.onload = function(){
        co()
    }

    Bon je sais d'avance qu'il y a des moyens plus simple de faire de genre de chose j'en suis persuader mais à mon niveau j'y vois un peu plus clair comme ça... J'aimerais surtout savoir pourquoi que ma methode ne marche pas et pourquoi pas connaitre la version simplifié =)

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Déjà, "Un checkbox dans une autre checkbox" : je ne sais même pas comment on peut faire !

    2- Dans ton code HTML, la balise <form> n'englobe pas tous les <input>... Y'a comme un défaut...

    3- (après un coup d'oeil au code JavaScript) il faut regrouper les instructions dans UN SEUL window.onload :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    window.onload = function() {
      co();
      inscri();
      rejoindre();
    };
    Là, ça va tout de suite mieux.

    4- On peut aussi simplifier chacune des fonctions :
    Code JavaScript : 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
    function rejoindre() {
      var btn = document.getElementById("join");
      var div = document.getElementById("postule");
      btn.onclick = function() {
        div.style.display = (btn.checked)? "block" : "none";
      };
      div.style.display = "none";
    }
     
    function inscri() {
      var btn = document.getElementById("new");
      var div = document.getElementById("newlog");
      btn.onclick = function() {
        div.style.display = (btn.checked)? "block" : "none";
      };
      div.style.display = "none";
    }
     
    function co() {
      var btn = document.getElementById("connection");
      var div = document.getElementById("log");
      btn.onclick = function() {
        div.style.display = (btn.checked)? "block" : "none";
      };
      div.style.display = "none";
    }
     
    window.onload = function() {
      co();
      inscri();
      rejoindre();
    };

    5- On peut encore simplifier, avec UNE SEULE fonction (et 3 paramètres) :
    Code JavaScript : 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
    function checkbox_action( action ) 
    {
      switch( action )
      {
        case 'connection':
          var btn = document.getElementById("connection");
          var div = document.getElementById("log");
          break;
        case 'inscription':
          var btn = document.getElementById("new");
          var div = document.getElementById("newlog");
          break;
        case 'rejoindre':
          var btn = document.getElementById("join");
          var div = document.getElementById("postule");
          break;
      }
      btn.onclick = function() {
        div.style.display = (btn.checked)? "block" : "none";
      };
      div.style.display = "none";
    }
     
    window.onload = function() {
      checkbox_action('connection');
      checkbox_action('inscription');
      checkbox_action('rejoindre');
    };

    6- Une autre variante, encore plus compacte :
    Code JavaScript : 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
    function checkbox_action( ) 
    {
      var actions = ['connection','inscription','rejoindre'];
      var btns = ['connection','new','join']; // id des checkbox
      var divs = ['log','newlog','postule']; // id des div
      actions.forEach( function( action, index ) 
      {
        var btn = document.getElementById(btns[index]);
        var div = document.getElementById(divs[index]);
        btn.onclick = function() {
          div.style.display = (btn.checked)? "block" : "none";
        };
        div.style.display = "none";
      });
    }
     
    window.onload = function() {
      checkbox_action();
    };
    Dernière modification par Invité ; 02/08/2018 à 20h46.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 189
    Points : 79
    Points
    79
    Par défaut
    1. En faite le principe que la première checkbox dévoile la possibilité d'ouvrir la deuxième tout simplement =)

    2.Bien vu !! c'est juste que j'ai rajouté que après la partie sans !!

    3.Ha ba comme quoi j'en apprends tout les jours =)

    4.Je comprends pas trop la ligne 5 :/ (et donc la 14 et la 23)

    5.Faut vraiment que je revois le switch et les cases !!!

    6.Avec des arrays donc... La ca commence à etre un peu piquant pour moi mdrrr... Mais c'est marrant j'aurais jamais pensé à utiliser cela...

    7. Merci pour ta réponse ^^

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    pour l'opérateur (test ? b : c), regardez là :
    https://developer.mozilla.org/fr/doc...r_conditionnel

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 189
    Points : 79
    Points
    79
    Par défaut
    Haaaaa oui le fameux ternaire =)
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplir une colonne checkBox dans une datagrid
    Par ouinih dans le forum Développement Windows
    Réponses: 3
    Dernier message: 26/11/2010, 21h25
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. Creer une colonne checkbox dans une table
    Par darkmanx dans le forum Débuter
    Réponses: 1
    Dernier message: 29/04/2009, 17h23
  4. Controler un checkbox dans une autre frame.
    Par morgan47 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/03/2007, 11h35
  5. cliquer sur une checkbox remplit une autre checkbox
    Par fsautejeau dans le forum IHM
    Réponses: 8
    Dernier message: 07/12/2006, 13h06

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