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; }
Partager