Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 3 połączone listy rozwijane
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
krukilis
Poszukuje skryptu 3 połączonych list rozwijanych. Chodzi mi o np. o listy jakie znajdują się na stronie nvidii przy pobieraniu sterowników. Tzn. Wybieram coś z pierwszej listy i wtedy pojawiają się opcje na drugiej i kiedy wybieram z drugiej pojawiaja się opcje wyboru na trzeciej. Przy czym chciałbym, aby wybranie z trzeciej listy powodawało przejscie do określonego linku (niekoniecznie). Pozdrawiam.
strife
Witam,

Skoro na nvidi jest taki skrypt to czemu po prostu trochę nie podejrzeć kodu źródłowego?

Pozdrawiam!
krukilis
Probowalem juz go wyciagnac, ale nie chce dzialac, poza tym jak dla mnie laika, wydaje sie troszke zbyt skomplikowany...
berdyk
na początek niezbędny JS
Kod
function writeDynaList( selectParams, source, key, orig_key, orig_val ) {
    var html = '\n    <select ' + selectParams + '>';
    var i = 0;
    for (x in source) {
 if (source[x][0] == key) {
     var selected = '';
     if ((orig_key == key && orig_val == source[x][1]) || (i == 0 && orig_key != key)) {
   selected = 'selected="selected"';
     }
     html += '\n  <option value="'+source[x][1]+'" '+selected+'>'+source[x][2]+'</option>';
 }
 i++;
    }
    html += '\n    </select>';

    document.writeln( html );
}

oraz zbiór wartości (tabela w JS)
Kod
var ds = new Array;
//ds[]= new Array ( 'grupa-id z poprzedniego selecta','id','wartosc' );

/np dla drugiego selecta

ds1[0] = new Array ( '1','293','war0' );
ds1[1] = new Array ( '1','292','war1' );
ds1[2] = new Array ( '1','291','war2' );
ds1[3] = new Array ( '1','284','war3' );
ds1[4] = new Array ( '1','283','war4' );
ds1[5] = new Array ( '1','282','war5' );
ds1[6] = new Array ( '2','258','war6' );
ds1[7] = new Array ( '2','175','war7' );
ds1[8] = new Array ( '2','164','war8' );
ds1[9] = new Array ( '2','6','war9' );
ds1[10] = new Array ( '3','341','war10' );
ds1[11] = new Array ( '3','340','war11' );
ds1[12] = new Array ( '3','333','war12' );
ds1[13] = new Array ( '3','332','war13' );

//oraz dla 3-ego selecta analogicznie tabela z danymi

teraz jak zagniezdzic to w html
  1. <select name="dds0" onchange="changeDynaList( 'dds1', ds1, document.form.ds0.options[document.form.ds0.selectedIndex].value, 0, 0);">
  2. <option value="1">1</option>
  3. <option value="2">2</option>
  4. <option value="3">3</option>
  5.  
  6.  
  7. <select name="dds1" onchange="changeDynaList( 'dds2', ds2, document.form.dds1.options[document.form.dds1.selectedIndex].value, 0, 0);"></select>
  8.  
  9.  
  10. <select name="dds2"></select>
  11.  
  12. <!--na koniec przycisk wysyłający-->
  13. <input type="submit" name="send" value="Wyślij">


Nie sprawdzałem czy dział ale myślę ze tak.

pozdro
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.