Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js?] Dynamiczne źródło W Polu <select>
Forum PHP.pl > Forum > Po stronie przeglądarki
ktuvok
Rysuję formularz html, którego jednym z elementów będzie pole <SELECT>. W jaki sposób uzależnić zestaw możliwych do wybrania wartości w tym polu od wyboru określonej wartości w innym polu?

Czyli:

Jeśli w <INPUT TYPE=SELECT NAME=A> wybrano 1
to w polu <INPUT TYPE=SELECT NAME=B> są do wyboru możliwości 1 i 2.

Jeśli wybrano 2 -> 5, 6 i 7

itd...

Jak się do tego zabrać?


Pozdrawiam,
K

PS
Piszę na to forum, bo niespecjalnie mam pomysł, gdzie to pytanie postawić, więc jeśli nie trafiłem, to przenieście proszę.
adism
Oto kod dla dynamicznego menu:

  1. <form name="menu">
  2. <p><select name="menu1" size="1" onChange="refresh()">
  3. <option>grupa a</option>
  4. <option>grupa b</option>
  5. <option>grupa c</option>
  6. <option>grupa d</option>
  7. <select name="menu2" size="1">
  8. </p>
  9. </form>
  10. <!--
  11. grupa = new Array();
  12.  
  13. grupa[0] = new Array();
  14. grupa[0][0] = new Option("text a1","value_a1");
  15. grupa[0][1] = new Option("text a2","value_a2");
  16. grupa[0][2] = new Option("text a3","value_a3");
  17.  
  18. grupa[1] = new Array();
  19. grupa[1][0] = new Option("text b1","value_b1");
  20. grupa[1][1] = new Option("text b2","value_b2");
  21. grupa[1][2] = new Option("text b3","value_b3");
  22.  
  23. grupa[2] = new Array();
  24. grupa[2][0] = new Option("text c1","value_c1");
  25. grupa[2][1] = new Option("text c2","value_c2");
  26. grupa[2][2] = new Option("text c3","value_c3");
  27.  
  28. grupa[3] = new Array();
  29. grupa[3][0] = new Option("text d1","value_d1");
  30. grupa[3][1] = new Option("text d2","value_d2");
  31. grupa[3][2] = new Option("text d3","value_d3");
  32.  
  33. function refresh() {
  34. id = document.menu.menu1.options.selectedIndex;
  35. for (m = document.menu.menu2.options.length-1; m>0; m--) {
  36.   document.menu.menu2.options[m] = null;
  37. }
  38. for (i = 0; i<grupa[id].length; i++) {
  39.   document.menu.menu2.options[i] = grupa[id][i];
  40. }
  41. document.menu.menu2.options[0].selected=true;
  42. }
  43. refresh(0);
  44. //-->


mam nadzieje ze sie przyda

pozdro
Fibolg
To ja dołączę się do pytania... W jaki sposób zrobić, żeby w polu <OPTION> napis był kolorowy oraz, żeby w nim zamieścić kwadrat jakiegoś koloru? Wiem, że to jest możliwe tylko nie wiem dzięki CSS czy JS?
g-4
witam,
co trzeba dodac do powyrzszego kodu aby po wejsciu na stronie w edycje i wybraniu interesujacego nas wpisu w formularzu automatycznie ustawil sie SELECTED przy odpowiednim <option> w <selected name=menu2>.
dane o wpisie przechowuje w mysql.
mam nadzieje ze nie zakrecilem zabardzo tongue.gif i zrozumiecie o co mi chodzi

prosze o pomoc
migacz
witam
odgrzebuje trochę temat
kożystam z przykładu podanego przez adism'a
wszystko ładnie działa z tym że ja potrzebuje kilka takich selektów w jednym formularzu
uproszczona wersja tego co mam
najpierw za pomocą for $a=1... generuje takie coś
Kod
grupa$a = new Array();
grupa$a[0] = new Array();
grupa$a[0][0]=new Option(text0","4");

grupa$a[1] = new Array();
grupa$a[1][0]=new Option("text1","3");
grupa$a[1][1]=new Option("text2","1");

potem generyje funkcje
function refresh$a() {
    id = document.menu.menu$a.options.selectedIndex;
    for (m = document.menu.menu2_$a.options.length-1; m>0; m--) {
        document.menu.menu$a.options[id].selected=true;
    document.menu.menu2_$a.options[m] = null;
    }
    for (i = 0; i<grupa$a[id].length; i++) {
    document.menu.menu2_$a.options[i] = grupa$a[id][i];
    
    }
    document.menu.menu$a.options[0].selected=true;
    }
refresh$a(0);

mam oczywiście równierz odpowiednią ilość selektów
Kod
<select name=menu$a size=1 onChange=refresh$a()>
<option>123</option>
<option>456</option>
</select>

<select name=menu2_$a size=1></select>

i problem polega na tym ze jak wybiore coś w select menu$a to w select menu2_$a pojawiają się właściwe opcj,e a select menu$a powraca do pierwszej pozycji
nie wiem czy dobrze wytłumaczyłem
niestety nie znam sie na JS a to bardzo ułatwiło by mi sprawe
gdyby ktoś mógł pomóc lub pokazał jak to mozna inaczej rozwiać byłbym bardzi wdzięczny
z góry dzęki za pomoc
revyag
Powiedz coś więcej, bo ja nie do końca rozumiem.
Masz jednego selecta, wybierasz w nim opcję, i wtedy w drugim generowane są odpowiednie opcje.
Moje pytanie jest takie, na podstawie czego są te opcje generowane i ile ma ich się generować.
migacz
yoł, sorki za zamieszanie, już znalazłem przyczyne wadliwego działania 1-literówka
2 - nie może być pustej tablicy, a ja taką miałem. siedziałem nad tym wczoraj 5 godzin i nic, jednak jak sie człowiek wyśpi to ma lepsze myslenie
Bartech
KOcham to forum, człowiek myśli że ma problem nie z tej ziemi, a tu wystarczy poczytać sobie o problemach innych i jak się okazuje nie dość że moje problemy nie są ORYGINALNE to jeszcze nie są już problemami bo odpowiedź na nie jest powyżej mojego textu!!! Dzięki wszystkim!!! :roll2:
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.