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 :

Désactiver la valeur d'une liste déroulante si déjà sélecitonnée dans une autre


Sujet :

jQuery

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Désactiver la valeur d'une liste déroulante si déjà sélecitonnée dans une autre
    Salut tout le monde,

    J'ai une première liste déroulante :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="form-group col-md-6" id="herb_div">
    							<label class="form-check-label"><strong><h5>Plante *</h5></strong></label>
    							<select name="herb[]" id="herb" class="form-control">
    							</select>
                            </div>

    Cette liste déroulante est alimentée par les valeur d'une table de ma base de données.

    Je donne la possibilité à mes visiteurs de cloner cette liste déroulante avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#herb_div").clone().attr({'id': 'herb_div' + cpt}).appendTo('#countHerb') .after(selct); // Add field html
    J'ai du code js qui permet lorsque je sélectionne ma première liste déroulante de désactiver les valeurs identiques dans les autres listes déroulantes clonées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $('select').on('change', function() 
                {
                    alert("change");
     
                    // enable all options 
                    $('option[disabled]').prop('disabled', false);
     
                    $('select').each(function() 
                    {
                        $('select').not(this).find('option[value="' + this.value + '"]').prop('disabled', true); 
                    });
    Cela fonctionne juste pour la première en fait, je dois dire que les autres ne sont pas dans le DOM lors du chargement de le page, elles sont clonées et appariassent quand je clic sur le bouton + :

    Voici ce que ça donne, je choisis une valeur dans la première liste déroulante, la seconde m'empêche de choisir la même valeur :

    Nom : Capture d'écran 2020-07-03 19.27.40.png
Affichages : 470
Taille : 239,1 Ko

    Auriez-vous une idée comment je pourrais améliore mon code afin que ça fonctionne avec toutes les listes déroulantes, mêmes celles qui sont générées à la volée ?

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 414
    Points : 4 864
    Points
    4 864
    Par défaut
    Bonjour,

    Deux solutions possibles :

    Soit utiliser le paramètre true de $.clone() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#herb_div").clone(true)....
    Soit attacher l’événement "change" aux select par délégation :

    C'est à dire au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('select').on('change', function() {....});
    tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('#countHerb').on('change', 'select',function(){....});

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Toufik,

    Mille mercis pour ta réponse.

    Mon code fonctionne parfaitement et le résultat attendu est le résultat obtenu.

    Je suis vraiment satisfait.

    Encore merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/09/2017, 13h39
  2. Sélectionner une valeur de la liste déroulante
    Par jacadi87 dans le forum Langage
    Réponses: 22
    Dernier message: 12/01/2010, 16h19
  3. Réponses: 5
    Dernier message: 18/11/2009, 11h25
  4. Réponses: 10
    Dernier message: 21/08/2007, 10h21
  5. [MySQL] Problème de liste déroulante utilisant une valeur d'une autre liste
    Par Lydie12 dans le forum PHP & Base de données
    Réponses: 75
    Dernier message: 15/06/2007, 15h57

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