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 :

[AJAX] Listes chainées - Mauvaise actualisation d'un select


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut [AJAX] Listes chainées - Mauvaise actualisation d'un select
    Bonjour,

    J’ai un « gros problème » d’AJAX ! Je me soigne mais ….

    Pour mieux comprendre :
    Page de test
    (affiche code source).

    En résumé :
    Ce formulaire permet de sélectionner un loueur de bateau (Provider). Une fois sélectionné, on interroge une base et on rapatrie ses coordonnées et éventuellement la liste de bateaux connus pour ce fournisseur.

    Si ce provider appartient à un groupe, on affiche d’abord la liste de ses agences.
    Par défaut, on affiche toujours les coordonnées de la première agence (ordre alphabétique).

    Dans le cadre de mes tests.
    J’ai Antilles Sail qui est un groupe qui a 2 agences : Antilles Sail Guadeloupe et Antilles Sail St martin.

    Comprendre le bug.
    Au chargement de la page, selectionner Antilles Sail. Une liste déroulante apparait alors avec le nom des 2 agences (bureaux). Naturellement l’agence Antilles Sail Guadeloupe apparait en premier.
    Si vous cliquez indéfiniment sur l’une ou l’autre agence, tout se déroule bien. Les coordonnées sont actualisées, ainsi que la liste des bateaux.
    Selectionner une dernière fois Antilles Sail St Martin.
    Maintenant, cliquer sur Loueur de bateaux indépendant. Tout se déroule bien, on vous affiche ses coordonnées.
    Maintenant recliquons sur Antilles Sail.
    Rien ne va plus ! Antilles Sail St Martin apparait dans la liste comme choix, mais les informations affichées sont celles de Antilles Sail Guadeloupe…..

    Alors évidemment si on clique sur Antilles Sail Guadeloupe à présent, on réactualise et si on clique sur Antilles Sail St Martin, tout redevient normal.

    Qui peut m’aider à résoudre ce bug ?

    Pour le moment, je pense qu'il faut "forcer" la définition de la liste en disant que la valeur sélectionnée est la première valeur de la liste, mais je vois aps encore comment.
    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
    21
    22
    23
     
    // Si le Provideur appartient a un groupe de plusieurs agences (cas 3) On doit afficher cette liste
    				if (type_provider=='3') 
    				{
    					document.getElementById('bloc_bureau').style.visibility='visible';
    					document.getElementById('bureau').style.visibility='visible'; 
     
    					var selectBureau=document.getElementById("bureau");
    					var i, liste_agences, bureau, bureaux,nb_bureaux ;
    					liste_agences = traitement_reponse[2];
     
    					bureaux=liste_agences.split('¦'); //  ¦ est le separateur entre les agences
    					nb_bureaux=bureaux.length;
    					selectBureau.length=nb_bureaux;
    					for (i=0; i<nb_bureaux; i++)
    						{
    						bureau=bureaux[i].split('¤');  // ¤ est le séparateur entre l'id_fournisseur et son nom
    						selectBureau.options[i].value=bureau[0];
    						selectBureau.options[i].text=bureau[1];			
    						}
    						selectBureau.selectedIndex.value=0; 
     
    				}

  2. #2
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    A priori j'ai trouvé.

    En mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.reservation.bureau.selectedIndex =0;
    Je force l'affichage de la liste sur le premier choix.

    C'est une solution "bidouillée"... mais si vous avez une autre analyse.
    page test corrigée

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par tavarlindar Voir le message
    C'est une solution "bidouillée"...
    Heu ... non : tout à fait standard
    Seule correction pour une syntaxe plus "actuelle" (celle ci-dessus est dépréciée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['reservation'].elements['bureau'].selectedIndex =0;
    A+

  4. #4
    Membre éclairé Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Par défaut
    ok merci pour la précision.
    javascript et moi cela fait 2 !

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

Discussions similaires

  1. [AJAX] 3 listes chainé
    Par jj del amorozo dans le forum AJAX
    Réponses: 10
    Dernier message: 24/02/2012, 09h28
  2. tri par selection d'une liste chainée
    Par abdelghani666 dans le forum Débuter
    Réponses: 0
    Dernier message: 18/02/2012, 16h58
  3. Réponses: 1
    Dernier message: 29/05/2010, 18h22
  4. [AJAX] Liste déroulante qui ne s'actualise pas avec XMLHttpRequest
    Par zoom61 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/11/2006, 09h52
  5. [AJAX] Liste avec si select "autre" ouvre un div pour ajouter option
    Par gandalf76fr dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/11/2006, 15h24

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