JeuWeb - Crée ton jeu par navigateur
Combobox - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Combobox (/showthread.php?tid=96)



Combobox - Sunn - 24-08-2006

Bonjour a tous.

Voila j suis nouveau xD et j ai un petit probleme avec mes listes deroulantes.
Sur ma page j ai 3 combos qui doivent se remplir successivement les une par rapport aux autres et ceux sans cliquer sur un bouton. (Les données proviennent d une bdd)
Pour la premiere pas de probleme, la 2eme idem donc mon probleme intervient entre la 2eme et la 3eme liste.

Le codes d origines du scripts et de la page :



--------------form_modif_liste2.js---------------------------
Code :
// Détection du navigateur
nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false;
nc4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

// Fonction avec nom du formulaire, de la première et de la seconde liste en paramètres
function populate(form,select1,select2) {

// Création de raccourcis pour manipuler les listes
var origine = 'document.' + form + '.' + select1;
var resultat = 'document.' + form + '.' + select2;

// Si un item est sélectionné (sauf le premier, vide)
if ( eval(origine + '.options[' + origine + '.selectedIndex]').value != '' ) {

// Séparation de la valeur de l'item toutes les ',' en X éléments
var contenu = eval(origine + '.options[' + origine + '.selectedIndex]').value.split(",");

// Effacement de la liste d'arrivée (au cas où elle contienne déjà des éléments)
eval(resultat).length = 0;

// Pour chaque élément obtenu précédemment...
for ( i = 0; i < contenu.length; i++ ) {

// Séparation tous les '£' pour obtenir les textes et les valeurs
var valeur = contenu[i].split("£");

// Affectation à la liste d'arrivée
eval(resultat).options[i] = new Option(valeur[0], valeur[1]);
}

// Instruction spécifique à Netscape 4.x
if (nc4) {

// Sélection du premier item de la liste d'arrivée
eval(resultat).options.selectedIndex = 0;

// Rechargement de la page pour voir apparaître les nouvelles valeurs
history.go(0);
}
}
}

La page
----------------------------------------------------------------
Code :
<form name="formulaire">

<!-- Lancement de la fonction sur changement de la sélection -->
<select name="listeDepart" OnChange="populate('formulaire','listeDepart','listeArrivee');">
<option value="">Choisissez...</option>

<!-- Chaque option prend pour valeur la liste des items voulus dans la liste d'arrivée, séparés par des virgules (,) et re-séparés par des (£) pour les couples 'texte/valeur' -->
<option value="Le cinema...£,ET l'extraterrestre£et,Indiana Jones£indy,Misery£misery,James Bond£007">Cinema</option>
<option value="Le theatre...£,Boing-boing£boing,Voyage au bout de la nuit£voyage,Le roi Lear£lear">Theatre</option>
<option value="La musique...£,Johnny Halliday£n,Mireille Matthieu£co,Francis Cabrel£babacool,Lara Fabian£de,Roch Voisine£bru,Patrick Bruel£patriiick">Musique</option>
</select>

<!-- Liste qui contiendra les nouvelles valeurs -->
<select name="listeArrivee">
<option value="">_______________</option>
</select>
</form>

Merci d avance!

PS: j ai tente beaucoup de modifications mais sans succes.


RE: Combobox - marghost - 25-08-2006

Bon un petit rappel à l'ordre ton code doit toujours ètre entre les balises [php] ou [code] merci de ta compréansion