Forum-webmaster
Technique - programmation => Javascript / DOM / Ajax => Message commencé par: artgens le le 25-08-2008 a 13:38:51

Titre: Problème de script sous Firefox et Opéra
Posté par: artgens le le 25-08-2008 a 13:38:51

Bonjour,

Je rencontre un petit problème avec le script ci-dessous pour lier 2 listes déroulantes, il fonctionne correctement sous EI mais indique "undefined" si un choix est effectué dans la sous-catégorie avec les navigateurs Opéra et Firefox. Je débute en javascript, alors merci pour votre aide !

Le script :
<script language="JavaScript">
nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false;
nc4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;
function populate(form,select1,select2) {
var origine = 'document.' + form + '.' + select1;
var resultat = 'document.' + form + '.' + select2;
if ( eval(origine + '.options[' + origine + '.selectedIndex]').value != '' ) {
var contenu = eval(origine + '.options[' + origine + '.selectedIndex]').value.split(",");
eval(resultat).length = 0;
for ( i = 0; i < contenu.length; i++ ) {
var valeur = contenu.split("£");
eval(resultat).options = new Option(valeur[0], valeur[1]);}
if (nc4) {
eval(resultat).options.selectedIndex = 0;
history.go(0);
]} </script>

Le formulaire :
<form action="resultat.php" method="post" name="formulaire">
<select name="general" onchange="populate('formulaire','general','choix');">
<option value="">Recherche par catégorie</option>
<option value="Tous les produits£Roman,Bijoux,Fleurs,Jeux">Cadeaux</option></select>
<select name="choix"><option value="">Choisissez une sous-catégorie</option></select>
<input name="valide" type="submit" value="Valider la recherche"></form>

Merci par avance !


Titre: Re:Problème de script sous Firefox et Opéra
Posté par: dvilston le le 08-12-2008 a 14:44:45

Pour lier 2 combobox ensemble, tu as 2 techniques.
La première consiste à intégrer dans le javaScript toutes les données de tes combobox et de faire un conditionnement pour que la première combo sélectionne les résultats de la seconde.
La seconde solution, consiste à ne pas connaitre la totalité de tes champs à l'intérieur de la liste (données provenant du bdd par ex). Ainsi tu rempli dynamiquement la première, et tu ajoute un événement "onchange" qui va envoyer une requete Ajax pour que la réponse de cette requete remplisse la seconde.

pour te simplifier la vie, utilise la librairie jQuery, tu arrivera au résultat recherché beaucoup plus et sans prise de tête. Sutout que JQuery est cross-browser, donc plus de prise de tete avec les différences entre navigateurs !!

Enjoy !

;D
++


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.