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 :

Rendre un code de sélection dynamique


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut Rendre un code de sélection dynamique
    Bonjour.
    actuellement j'ai une liste de menu avec un code javascript comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $( function(){
            $('#nbrpersonne1').hide();
            $('#mb1').on('change', function(){
                if( $(this).is(':checked')){
                    $("#nbrpersonne1").slideDown();
                }
                 else{
                     $("#nbrpersonne1").slideUp();
                }
            });
        });
    qui me permet d'afficher ou cacher le nombre de personne pour le menu
    maintenant j'aimerai le rendre dynamique car je ne sais pas combien de menu mon client va mettre il peux en mettre moins que ce que j'ai prévus ou plus. et donc il faudrait que code s'adapte en fonction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $( function(){
            $('input[^nbrpersonne]').hide();
            $('input:checkbox[^mb]').on('change', function(){
                //recupérer l'id et le découper pour obtenir de la id checkbox
                var str = document.getElementById(this).getAttribute('id');
                var num = str.substr(3);
                if( $(this).is(':checked')){
                    $("#nbrpersonne"+num).slideDown();
                }
                 else{
                     $("#nbrpersonne"+num).slideUp();
                }
            });
        });
    Je suis novice en javascript et donc je ne sais pas comment y arriver.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    c'est quoi ce selecteur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $('input[^nbrpersonne]')
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    C'est une id, dans mon html j'ai un compte en php qui attribue un chiffre a chaque passage
    exemple : #nbrpersonne1 puis #nbrpersonne2, etc.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    pourquoi ne pas prendre un name ou une class que tu peux mettre sur plusieurs inputs ..

    sinon avec des id qui "commencent par"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('[id^=nbrpersonne]')
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    c'est ce que je voulais écrire et je me suis planté, je voulais $('[id^=nbrpersonne]') écrire les id qui commence par.
    Est-ce que la te semble correcte ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Une syntaxe plus rigoureuse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("[id^='nbrpersonne']")
    Et seulement si les elements existent sur la page au chargement ( document ready )
    Sinon il faudra passer par le on par délégation (3 paramètres)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    oui car le chargement des javascript ce fait à la fin de la page, donc oui.
    mais ça n'affiche toujours pas l'input #nbrpersonne cacher.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    C'est pas tout a fait ce que je voulais, voilà mon code html, j'ai donc un input #mb qui me permet d'afficher l'input #nbpersonne
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <div class="row">
                    <?php $cpt = 1; ?>
                    <?php $compteur = 1; ?>
                    <!-- Je fais une boucle sur $resultat_prix pour afficher tant qu'il y a quelque chose dedans -->
                    <?php while ($prix_menubanquet = mysqli_fetch_assoc($resultat_prix)) {?>
                    <div class="col s12 m6 l6">
                        <div class="row margebottom">
                            <!-- Compteur pour les id mb et nbrpersonne, pour le javascript de cacher et afficher -->
                            <?php if($compteur <= $prix_menubanquet["id_menu_banquet"]){?>
                            <div class="col s12 m5 l5">
                                <input name="menubanquet[]" value="menu<?php echo $prix_menubanquet["id_menu_banquet"] ?>" type="checkbox" id="mb<?php echo $compteur ?>"/>
                                <label for="mb<?php echo $compteur ?>">Menu à réserver</label>
                            </div>
                            <div id="nbrpersonne<?php echo $compteur ?>" class="col s12 m7 l7">
                                <div class="row margebottom">
                                    <div class="col s6 m6 l6">
                                        <input name="nb_personne<?php echo $prix_menubanquet["id_menu_banquet"] ?>" type="number" min="1" max="20" value="1"/>    
                                    </div>
                                    <div class="col s6 m6 l6">
                                        <button class="btnnbrpersonne" disabled>Nombre de personne</button>
                                    </div>
                                </div>
                            </div>
                            <?php }
                            $compteur++?>
                        </div>
                        <div class="row margebottom">
                            <div class="col s12 m12 l12">
                                <div class="card boxPlat">
                                    <div class="card-image">
                                        <img class="responsive-img" src="<?php echo $prix_menubanquet["lien_images"] ?>">
                                    </div>
                                    <div class="card-content">
                                        <div class="row">
                                            <div class="col s12 m12 l12">
                                                <!--J'affiche et concatène prix1-->
                                                <h3 class="titremb">Menu <span class="dumb">à </span><?php echo $prix_menubanquet["prix_menu"]; ?><span class="chfmb"> CHF</span></h3>
                                            </div>
                                        </div>
                                        <!-- Je fais une boucle sur $resultat1 pour afficher tant qu'il y a quelque chose dedans -->
                                        <?php
                                        //je creer une requete sql qui me donne ref_plat et descriptif de la table menu_plat et du au faite que j'ai fait une jointure entre ref_menu_banquet de la table menu_plat avec  
                                        //id_menu_banquet de la table menu_banquet et une autre jointure entre ref_plat de la table menu_plat avec id_plat de la table plat sur ref_menu_banquet = id_menu_banquet
                                        $sql_menubanquet = "SELECT * FROM menu_plat JOIN plat JOIN menu_banquet ON menu_plat.ref_menu_banquet = menu_banquet.id_menu_banquet AND menu_plat.ref_plat = plat.id_plat WHERE ref_menu_banquet = '".$prix_menubanquet["id_menu_banquet"]."' GROUP BY ref_genre_des_plats ASC";
                                        
                                        //je fait une condition qui verifie si la connexion c'est bien passe
                                        if(mysqli_errno($connexion) != 0){
                                            die ('ERREUR '.mysqli_error($connexion));
                                        }
                                        //j'execute la requete sql
                                        $resultat_menubanquet = mysqli_query($connexion, $sql_menubanquet);
                                        
                                        while ($menubanquet = mysqli_fetch_assoc($resultat_menubanquet)){ ?>
     
                                        <p class="centrermenubanquet"><?php echo $menubanquet["descriptif"]; ?><br/></p>
     
                                        <?php } ?>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                <?php
                if($cpt % 2 == 0) { ?>
                </div>
                <div class="row">
                <?php }
                $cpt++ ?>
                    <?php } ?>
                </div>

    avant j'avais ce code javascript qui était uniquement pour #nbpersonne1 ou #nbpersonne2 ou etc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $( function(){
            $('#nbrpersonne1').hide();
            $('#mb1').on('change', function(){
                if( $(this).is(':checked')){
                    $("#nbrpersonne1").slideDown();
                }
                 else{
                     $("#nbrpersonne1").slideUp();
                }
            });
        });
    et maintenant j'aimerai que le code soit dynamique, car je ne sais pas combien de menu il va créer
    Je pensais à un genre de code comme ça, qui va recherche le nombre de l'id (#nbpersonne1 et #mb1) et qui va le rajouter dans la l'id qui est dans la conditions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $( function(){
            $('[id^=nbrpersonne]').hide();
            $('[id^=mb]').on('change', function(){
                //recupérer l'id et le découper pour obtenir de la id checkbox
                var str = document.getElementById(this).getAttribute('id');
                var num = str.substr(3);
                if( $(this).is(':checked')){
                    $("#nbrpersonne"+num).slideDown();
                }
                 else{
                     $("#nbrpersonne"+num).slideUp();
                }
            });
        });

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    un exemple :
    https://jsfiddle.net/ypz83kjx/

    sinon tu peux passer par des data- sur tes checkboxes pour les lier aux inputs ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Merci.
    ça marche, par contre je devais mettre "[id^='nbrpersonne']" et non name car c'est l'id qui est a le compteur. ça marche jusqu'au 9 et le 10 il le considère comme le 1.
    Est-ce que tu aurais une solutions pour qu'il considère 10 comme 10 et non 1 ?

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Oui désolé, je m'en suis aperçu juste après, je voulais te le signaler mais j'ai été pris par autre chose ... (un truc qui s'appelle un métier ... )

    il suffit de récupérer tous les numériques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     menuid = $(this).attr('id').match(/\d+/)[0];
    avec la gestion en data il n'y aurait pas ce souci
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre du Club
    Homme Profil pro
    en étude de webmaster
    Inscrit en
    Février 2016
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : en étude de webmaster

    Informations forums :
    Inscription : Février 2016
    Messages : 125
    Points : 56
    Points
    56
    Par défaut
    Merci.
    J'imagine bien que tu travail et j'avais le temps, pour moi le boulot et passe toujours en premier et j'aurai compris si le temps de tes réponses était plus long, c'est normal.

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

Discussions similaires

  1. [VBA-E] Sélection dynamique
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/08/2006, 10h13
  2. Compilation de code de facon dynamique
    Par Kiwi dans le forum Général Java
    Réponses: 5
    Dernier message: 04/05/2006, 13h49
  3. Sélection dynamique de champs
    Par nirousse dans le forum Outils
    Réponses: 3
    Dernier message: 02/05/2006, 19h24
  4. [VBA-A][BDD] Rendre le code souple
    Par nuriel2 dans le forum VBA Access
    Réponses: 6
    Dernier message: 22/03/2006, 11h14

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