24-08-2006, 09:14 PM
(Modification du message : 20-05-2016, 03:05 PM par Xenos.
Raison de la modification: code tags
)
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---------------------------
La page
----------------------------------------------------------------
Merci d avance!
PS: j ai tente beaucoup de modifications mais sans succes.
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.