Aide - Recherche - Membres - Calendrier
Version complète : Lancer une page a partir d'1 liste allimentée via 1 autre
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Javascript et AJAX
bond007lr
Salut a tous !

J'ai au départ voulu faire quelque chose de similaire a la page de telechargement des drivers de Nvidia http://www.nvidia.com/content/drivers/drivers.asp mais quand j'ai maté le code c'est super chaud !! :shock:

Alors j'ai changé mon fusil d'epaule et j'ai opté pour un systeme de 2 listes deroulantes et je viens de trouver ceci sur le net :

CODE
<html>

<head>

<meta name="author" value="Biblioscript.com">

<title>Alimenter une liste par une autre liste 2</title>



<script language="JavaScript">

// Detection du navigateur

nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false;

nc4 = (document.layers)? true:false;

ie4 = (document.all)? true:false;



// Tableaux des valeurs pour chaque item de la premiere liste

// Chaque element est en deux partie :

// Le texte, un separateur (£), la valeur

var opt_cinema = new Array(

'ET l\'extra-terrestre£et',

'Mission: Impossible£mi',

'Retour vers le futur£retour',

'La fureur du dragon£fureur',

'Indiana Jones£indy',

'Misery£misery',

'James Bond£007'

);



var opt_musique = new Array(

'Johnny Halliday£johnny',

'Mireille Matthieu£matthieu',

'Lorie£lorie',

'Garou£garou',

'Aston Villa£astonvilla',

'Bruce Springsteen£springsteen',

'Francis Cabrel£cabrel',

'Lara Fabian£fabian',

'Roch Voisine£roch',

'Patrick Bruel£patriiick'

);



var opt_theatre = new Array(

'Boing-boing£boing',

'Le roi Lear£lear',

'Cuisines et dependances£cuisines',

'Voyage au bout de la nuit£voyage'

);





// Fonction avec nom du formulaire, de la premiere et de la seconde liste en parametres

function populate(form,select1,select2) {



// Creation de raccourcis pour manipuler les listes

var origine = 'document.' + form + '.' + select1;

var resultat = 'document.' + form + '.' + select2;



// Si un item est selectionne (sauf le premier, vide)

if ( eval(origine + '.options[' + origine + '.selectedIndex]').value != '' ) {



// Separation de la valeur de l'item toutes les ',' en 2 elements

 var contenu = eval(origine + '.options[' + origine + '.selectedIndex]').value.split(",");



// Si on trouve un zero, on prendra tous les elements

 if ( contenu[1] == 0 ) {

  longueur = eval('opt_' + contenu[0]).length;

  }



// Sinon...

 else {



// on prend le nombre trouve

  longueur = contenu[1];

  }



// Effacement de la liste d'arrivee (au cas ou elle contienne deja des elements)

 eval(resultat).length = 0;



// Pour chaque element du tableau voulu

 for ( i = 0; i < longueur; i++ ) {



// Separation tous les '£' pour obtenir les textes et les valeurs

  var valeur = eval('opt_' + contenu[0])[i].split("£");



// Affectation a la liste d'arrivee

  eval(resultat).options[i] = new Option(valeur[0], valeur[1]);

  }



// Instruction specifique a Netscape 4.x

 if (nc4) {



// Selection du premier item de la liste d'arrivee

  eval(resultat).options.selectedIndex = 0;



// Rechargement de la page pour voir apparaitre les nouvelles valeurs

  history.go(0);

  }

 }

}



</script>



</head>



<body>



<form name="formulaire">



<!-- Lancement de la fonction sur changement de la selection -->

 <p>

   <select name="listeDepart" OnChange="populate('formulaire','listeDepart','listeArrivee');">

     <!-- Chaque option prend pour valeur le nom du tableau d'items voulu et le nombre d'elements a reprendre de la liste -->

     <option value="">Choisissez...</option>

     <option value="cinema,0">Cinema</option>

     <option value="theatre,0">Theatre</option>

     <option value="musique,0">Musique</option>

     <option value="musique,2">Petite musique</option>

   </select>

   <!-- Liste qui contiendra les nouvelles valeurs -->

   <select name="listeArrivee">

     <option value="">_______________</option>

   </select>

 </p>

 </form>



</body>

</html>


J'aurais souhaité ajouter une adresse web a chaque possibilité de la 2eme liste déroulante et lancer une page lors du choix de cette 2eme liste. Ya t'il un moyen pour y parvenir ?

Merci a tous de vos réponses !

Bond007lr
bond007lr
bon laissez tomber ce code j'en ai fait un plus simple mais la j'ai un souci...

En fait ya un truk ki foire... kan on appuie sur go, on arrive sur la page voulue mais kan on faie precedente avec le bouton du navigateur ca remet pas les options comme si on faisait une nouvelle recherche

CODE
<html>

<head>

</head>

<body>



<form name="doublecombo">

<p><select name="exemple" size="1" onChange="redirect(this.options.selectedIndex)">

     <option selected>Choisissez votre theme</option>

     <option>Theme 1</option>

     <option>Theme 2</option>

     <option>Theme 3</option>

     <option>Theme 4</option>

   </select>

<select name="combo2" size="1">

     <option selected>- Choisissez votre formation -</option>

   </select>

<input type="button" name="test" value="Go!"

onClick="go()">

</p>



<script>

<!--



var groups=document.doublecombo.exemple.options.length

var group=new Array(groups)

for (i=0; i<groups; i++)

group[i]=new Array()



group[0][0]=new Option("- Choisissez votre formation -","http://www.google.fr")



group[1][0]=new Option("Formation 1","http://www.google.fr")

group[1][1]=new Option("Formation 2","http://www.yahoo.fr")

group[1][2]=new Option("Formation 3","http://www.hardware.fr")



group[2][0]=new Option("Formation 4","http://www.google.fr")

group[2][1]=new Option("Formation 5","http://www.yahoo.fr")

group[2][2]=new Option("Formation 6","http://www.hardware.fr")



group[3][0]=new Option("Formation 7","http://www.google.fr")

group[3][1]=new Option("Formation 8","http://www.yahoo.fr")

group[3][2]=new Option("Formation 9","http://www.hardware.fr")

group[3][3]=new Option("Formation 10","http://www.clubic.fr")

group[3][4]=new Option("Formation 11","http://www.3dchips-fr.com")



group[4][0]=new Option("Formation 12","http://www.google.fr")

group[4][1]=new Option("Formation 13","http://www.yahoo.fr")

group[4][2]=new Option("Formation 14","http://www.hardware.fr")



var temp=document.doublecombo.combo2



function redirect(x){

for (m=temp.options.length-1;m>0;m--)

temp.options[m]=null

for (i=0;i<group[x].length;i++){

temp.options[i]=new Option(group[x][i].text,group[x][i].value)

}

temp.options[0].selected=true

}



function go(){

location=temp.options[temp.selectedIndex].value

}

//-->

</script>



</form>

</body>

</html>


Vous pouvez m'aiguiller please ?
bond007lr
bouuuuuuuhhh... snif personne veut m'aider :roll:

Personne n'a d'idée alors pour rafraichir automatiquement une page quand on clique sur le bouton back du navigateur ?
bond007lr
bon ben j'ai trouvé... mais c'est pas facile kan on debute... :roll:
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.