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 :

Combobox : Remove() + rechargement => OPTION vide (<OPTION></OPTION>)


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut Combobox : Remove() + rechargement => OPTION vide (<OPTION></OPTION>)
    Bonjour à tous,

    Mon problème en quelques point:

    Contexte
    J'initialise une combobox avec la résultat d'une requête via ajax et PHP qui tape dans une BdD MySQL.
    Pour l'exemple, la requête d'initialisation ramène 4 lignes qui alimente ainsi la combobox:

    Je charge la combo avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var listBox = "#cbFormation";
    $("option", listBox).remove();
    for (var i=0; i<oDataSQL.length; i++)
    {	oDataListBox.text = oDataSQL[i]["LIBELLE"];
    	oDataListBox.value = oDataSQL[i]["IDSESSION"];
    	$(listBox).addOption(oDataListBox.value, oDataListBox.text);
    }
    Après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("option", listBox).remove();
    je n'ai plus aucune OPTION dans le DOM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <select name="cbFormation" size="1" id="cbFormation" onchange="setRating();return false;" style="position:absolute;left:191px;top:184px;width:284px;height:21px;z-index:22;">
    </select>
    Et après le chargment (boucle for) j'ai bien mes 4 items dans le DOM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="cbFormation" size="1" id="cbFormation" onchange="setRating();return false;" style="position:absolute;left:191px;top:184px;width:284px;height:21px;z-index:22;">
    <option>value="0">Maconnerie du 01 mars 2016</option>
    <option value="1">porte du 01 mars 2016</option>
    <option value="2">informatique du 01 avril 2016</option>
    <option value="3">salle de bain du 01 mai 2016</option></select>
    Problème
    Si je recharge la combobox avec un nombre d'items inférieur au nombre initial j'ai autant de lignes à blanc que de différence entre le nombre de lignes ramenées initialement et celui du rechargement.
    Si je recharge la combobox avec 3 items, après le chargement (boucle for) j'ai bien les 3 items mais avec un intrus <option></option> dont la présence est totalement inexpliquée !!!!

    Voici le code copié dans l'inspecteur Chrome :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="cbFormation" size="1" id="cbFormation" onchange="setRating();return false;" style="position:absolute;left:191px;top:184px;width:284px;height:21px;z-index:22;">
    <option></option>
    <option value="1">porte du 01 mars 2016</option>
    <option value="2">informatique du 01 avril 2016</option>
    <option value="3">salle de bain du 01 mai 2016</option></select>
    Toute aide sera la bienvenue

    Bonjour chez vous

  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
    $( '#cbFormation' ).empty();.

    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 éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bonsoir danielhagnoul

    Je te remercie une nouvelle fois pour ton aide.

    Si tu veux tester en direct mon problème, il suffit de cliquer ici!. Désolé pour la pub, ce n'est pas de mon fait mais le prix à payer pour être hébergé gratuitement

    Valide avec user0/user0 et ensuite fais une recheche avec la date du jour dans le champs "Entre le " . La combobox sera alors composé de 3 items mais de 4 lignes. Et bien sûr la sélection de la ligne à blanc provoque une erreur.

    On obtient
    Nom : cbox_reinit.png
Affichages : 150
Taille : 27,3 Ko

    C'est à n'y rien comprendre (j'adore cette expression désuette )


    Bonsoir chez toi

  4. #4
    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
    Bonjour

    Je viens de tester (désolé pour le délai, j'ai été plus malade que d'habitude). Je ne vois pas de ligne blanche, juste 4 lignes d'options bien remplies.

    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.)

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 026
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 026
    Billets dans le blog
    45
    Par défaut
    Bonjour danielhagnoul,

    Désolé d'apprendre que tu as été malade et espère que la santé revient.

    Merci d'avoir testé la démo. Ce problème arrive après avoir cliqué sur le bouton recherche avec une date de début saisie dans les critères de recherche ici le 31.03.2016 Cf.ci-dessous

    Nom : demo_cbox_refresh.png
Affichages : 153
Taille : 26,9 Ko


    Et dans l'inspecteur du browser, les 2 items dont la date de début est inférieure à la date saisie ont disparu mais j'ai encore les 2 <option></option> vides a priori correspondant aux 2 items supprimés. La question est pourquoi ces deux lignes à blanc?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select name="cbFormation" size="1" id="cbFormation" onchange="setRating();return false;" style="position:absolute;left:191px;top:147px;width:352px;height:21px;z-index:19;">
    <option></option>
    <option></option>
    <option value="2">informatique du 01 avril 2016</option>
    <option value="3">salle de bain du 01 mai 2016</option>
    </select>
    sachant que la fonction de chargement dynamique de la combobox est :

    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
    function setListBox(pDataSQL, pListBox)
    {	var oDataListBox= {};
    	var oDate = new Date();
    	var oDataSQL = pDataSQL;
    	var listBox  = "#" + pListBox;
     
    	$("option", listBox).remove();
     
    	for (var i=0; i<oDataSQL.length; i++)
    	{	tDate = oDataSQL[i]["DATEDEB"];
    		oDate = new Date(oDataSQL[i]["DATEDEB"].replace(/\s/,"T"));
    		oDataListBox.text = oDataSQL[i]["LIBELLE"]+ " du " + oDate.toFrFormat() ;
    		oDataListBox.value = oDataSQL[i]["IDSESSION"];
    		$(listBox).addOption(oDataListBox.value, oDataListBox.text);
     
    	}
    }
    Bonjour chez toi et bonne santé

  6. #6
    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
    Avec une date dans le futur et un clic sur le bouton "recherche", oui j'ai deux lignes vides.

    Mais je vois qu'à la ligne 65 du code "formulaire.js", vous n'avez pas remplacé $("option", listBox).remove(); par $( listBox ).empty();.

    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.)

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

Discussions similaires

  1. [W3C] Option vide et espace dans un lien
    Par ledisciple dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/12/2009, 14h16
  2. Groupes d'options vides
    Par domik dans le forum IHM
    Réponses: 5
    Dernier message: 16/03/2008, 21h35
  3. Combobox : pb doublons et lignes vides !
    Par ln0331 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/01/2008, 12h43
  4. Réponses: 6
    Dernier message: 19/12/2006, 17h16
  5. Réponses: 4
    Dernier message: 05/09/2005, 11h13

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