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 :

Peupler des champs déroulants


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 183
    Par défaut Peupler des champs déroulants
    Bonjour,

    Je cherche à peupler des champs déroulants d'un formulaire avec des données provenant d'une requête AJAX.

    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
    function SelectCollection(){; 
      $.ajax({
        url: monurl,
        type: 'GET',
        datatype: 'json',
        complete: function(res) {
            var record = res.responseJSON.records;
     
            for (const val of record) {
     
              $('.collection_selection').append($(document.createElement('option')).prop({
                value: val.id,
                text: val.nom
            }));
     
     
              }
            }
          })
        }
    Le problème est que j'appelle cette fonction plusieurs fois dans mon code et je me retrouve systématiquement avec une liste déroulante avec des valeurs dupliquées.

    Je me retrouve avec une liste déroulante peuplée :

    option1
    option2
    option3
    option1
    option2
    option3
    ...

    et autant de fois que la fonction est appelée.

    Comment faire pour peupler une liste déroulante (<select>) et éviter le comportement décrit plus haut ?

    Merci pour vos retours,

    Sylvain

  2. #2
    Membre éclairé Avatar de Chou-ette
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 57
    Par défaut
    Bonjour,

    Videz les options du select à la ligne 8 de votre bloc de code, juste avant de le remplir avec les options que vous venez de récupérer.

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 183
    Par défaut
    D'accord et ça se passe comment ?

    J'ai jamais vraiment eu l'occasion de faire ce genre de chose, donc je patauge un peu....

    Comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idDuSelect').options.length=0;

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('idDuSelect').length=0;
    Pas besoin de préciser .options
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 183
    Par défaut
    Ok j'essaye ça. Merci :-)

  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
    Bonjour,
    de deux choses l'une, ou tu codes en jQuery ou en « vanilla » mais pas les deux, c'est ce que appelles familièrement du JavaScriptCrise

    Il existe une méthode pour vider un élément de ses enfants : empty().

    De même tu as dû mal appréhender la puissance de la méthode append().

    Dernier point, si tu utilises jQuery pour sa méthode $ajax alors regarde du côté de l'API Fetch.

Discussions similaires

  1. Problème copie d'écran des champs déroulants
    Par PhilLU dans le forum Delphi
    Réponses: 1
    Dernier message: 26/05/2017, 20h21
  2. Création des champs déroulants dans excel 2013
    Par MSAIDIE dans le forum Excel
    Réponses: 1
    Dernier message: 19/02/2017, 11h51
  3. Réponses: 2
    Dernier message: 08/06/2007, 18h00
  4. Réponses: 27
    Dernier message: 12/04/2007, 10h23
  5. Réponses: 4
    Dernier message: 19/07/2006, 10h07

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