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

jQuery Discussion :

Checkbox et Slidetoggle


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut Checkbox et Slidetoggle
    Bonjour à tous et à toutes,

    J'ai un léger souci avec mon JavaScript...

    Je souhaiterais automatiser mon slideToggle au chargement de la page !
    Quand je clique sur une checkbox, un contenu apparait. Pour l'instant aucun problème mais si je charge ma page et que une checkbox est déjà check (via ma BD), j'aimerais que ça s'affiche tous seul.

    Quelqu'un a une idée ?


    Voici le code qui me permet d'afficher lorsque je check :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $('.subsublist').hide();
    $('.clearfix').change(function() {
          var Cb=$(this).children('.checkbox').eq(0);
          var jObj = $( this ).next( '.subsublist' ).eq(0);
          jObj.slideToggle( Cb.checked );
    });
    Voici le code qui fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var ischecked=$('.checkbox').is(':checked'); 
    if(ischecked)
    {
           $('.checkbox').next('.subsublist').eq(0).slideToggle(200);
    }
    else
    {
           $('.checkbox').next('.subsublist').slideUp(200);   
    }
    Voici une partie de mon html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       <div class="clearfix"><div class="checkbox">
             <label>
             <input type="checkbox" id="inputmetiers[Banque]" name="metiers[Banque]" value="Banque">
             Banque</label>
       </div>
    </div>
    <div class="subsublist" style="margin-left: 20px; margin-bottom: 20px; display: none;"><div class="row"><div class="col-md-4" style="margin-top:20px;">
    ...

    Merci.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Exemple :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    .row { display: none; }

    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
    <label>
        <input type="checkbox" name="metiers[]" value="0">
        Banque 1
    </label>
    <label>
        <input type="checkbox" name="metiers[]" value="1">
        Banque 2
    </label>
    <label>
        <input checked type="checkbox" name="metiers[]" value="2">
        Banque 3
    </label>
     
    <div class="row">
        <p>Row Banque 1</p>
    </div>
    <div class="row">
        <p>Row Banque 2</p>
    </div>
    <div class="row">
        <p>Row Banque 3</p>
    </div>

    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
    $( function(){ // forme abrégée de $(document).ready(function(){
     
        var jObjCheckbox = $( "input[type='checkbox'][name='metiers[]']" ),
            jObjRows = $( "div.row" );
     
        jObjCheckbox.on( "change", function( ){
            if ( $( this ).is( ":checked") ){
                jObjRows
                    .eq( $( this ).val() )
                    .show();
            } else {
                jObjRows
                    .eq( $( this ).val() )
                    .hide();
            }
        });
     
        jObjCheckbox.trigger( "change" );
     
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut
    Bonjour,

    Merci d'avoir répondu !

    J'ai essayer le code et il ne fonctionne pas :/

    http://jsfiddle.net/

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    J'ai essayer le code et il ne fonctionne pas :/
    il est vrai que cela nous aide énormément pour cerner le soucis

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut
    En même temps, on me propose une solution , je la teste et elle ne marche pas ...
    Je prefère prévenir après si vous voulez des informations vous avez juste a demander .

    Le problème est expliqué juste au dessus

    Lorsqu'une checkbox est pré-cocher la div next() doit être affiché ( pour résumé )

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    En même temps, on me propose une solution , je la teste et elle ne marche pas ...
    non tu as testé une solution approchante mais pas celle de danielhagnoul.

    Ton exemple en lien fonctionne très bien.
    Tu utilises une id comme sélecteur, donc cela ne s'applique qu'à l'élément ayant cette id mais pas à d'autres si tu en rajoutes.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut
    Tu utilises une id comme sélecteur, donc cela ne s'applique qu'à l'élément ayant cette id mais pas à d'autres si tu en rajoutes.
    Je sais l'exemple à été pris sur le net mais enfaite le principale problème est que je ne peux pas sélectionner la checkbox pré-cocher avec mon code Jquery :/

    Je peux le sélectionner seulement avec un change() et $this alors que la étant donné que je clique pas je ne sais pas comment sélectionner cette checkbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var ischecked=$('.checkbox').is(':checked'); 
    if(ischecked)
    {
           $('.checkbox').next('.subsublist').eq(0).slideToggle(200);
    }
    else
    {
           $('.checkbox').next('.subsublist').slideUp(200);   
    }
    Dans ce code je sélectionne toute les checkbox et de je test si elle sont checked.

    Il est possible de les stockers dans un tableau pour ensuite les tester une par une ?

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il est possible de les stockers dans un tableau
    Ben oui, c'est le principe du sélecteur $('.checkbox')...
    ensuite les tester une par une
    Oui, mais pas avec .is(), c'est .each() qu'il faut utiliser.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut
    Merci pour cette réponse , je vais tester

  10. #10
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut
    Hello désolé pour cette réponse tardive ...

    J'ai remplacé la fonction is() par each() mais mon debug me dis qu'il ne connait pas cette fonction :/

    Je ne sais pas du tout comment l'utiliser dans la doc ils explique seulement l'utiliser avec une fonction ... or moi je veux l'utiliser à l'instantiation du document. Quelqu'un a une idée ?

    Merci

    EDIT: J'ai retester la fonction de danielhagnoul et elle est parfaite seul soucis c'est que les checkbox sont dans la div="subsublist" du coup il faut que je slidedown() le parent et le non le children ...

    Je ne sais pas comment le sélectionner :/ ( je suis vraiment mauvais en jquery dsl )


    J'ai trouver mon problème le système marche parfaitement le soucis c'est que j'ai plusieurs checkbox dans mon subsublist du coup quand je rencontre une checkbox checked il n'y a pas de problème mais quand je prend la suivant non checked .. ça hide tout du coup ça annule ...

    Quelqu'un a une idée pour contourné ça :/

Discussions similaires

  1. [JSP]checkbox
    Par orisis dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/04/2013, 13h53
  2. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44
  3. Checkbox
    Par rgarnier dans le forum XMLRAD
    Réponses: 11
    Dernier message: 06/03/2003, 10h48
  4. Couleur d'un CheckBox
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/07/2002, 14h48
  5. CheckBox en Read Only
    Par MrJéjé dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/06/2002, 15h00

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