Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zaleznymi selectami
Forum PHP.pl > Forum > Po stronie przeglądarki
Skyline
Witam, mam problem z zaleznymi selectami pod IE6 oraz IE7 - pod firefox działają poprawnie. Wydaje mi sie, ze blad jest gdzies w wywolaniu funkcji, gdyz w tym miejscu otrzymuje komunikat bledu. Siedze juz nad tym drugi dzien, jednak nie moge wyeliminowac tego bledu.

Fukcja w javascript jest taka:

function List(x,y,i,t)
{
var O={
'7':{'27':'Sieci wodne i kanalizacyjne','26':'Składowiska odpadów','25':'Spalarnie odpadów','24':'Oczyszczalnie ścieków',
'23':'Przemysłowe instalacje ochrony środowiska',},
'6':{'11':'Obiekty wielkokubaturowe','10':'Obiekty handlowe','9':'Obiekty użyteczności publicznej','8':'Obiekty biurowe',
'7':'Obiekty mieszkalne'},
'5':{'18':'Miejska infrastruktura komunikacyjna','17':'Obwodnice','16':'Drogi krajowe',},
'4':{'28':'Instalacje dla przemysłu energetycznego','22':'Instalacje przemysłowe','21':'Konstrukcje stalowe',
'20':'Hale magazynowe i centra logistyczne','19':'Hale przemysłowe',},
'3':{'15':'Obiekty infrastrukturalne','14':'Konstrukcje podziemne','13':'Wiadukty','12':'Mosty',}
}

while(y[0])y.remove(0)
for(i in O[x]){
y.appendChild(t=document.createElement('option')).text=O[x][t.value=i]

}
}

pierwszy select jest taki:

<select name="branche" onchange="List(this.value,this.form.investments);">
<option value="0">-- Wybierz --</option>
<option value="7">Budownictwo ochrony środowiska</option>
<option value="6">Budownictwo ogólne</option>
<option value="5">Budownictwo drogowe</option>
<option value="4">Budownictwo przemysłowe</option>
<option value="3">Budownictwo inżynierskie</option>
</select>

drugi, zalezny od tego wyzej:

<select name="investments">
<option value="0">-- Wybierz branże --</option>
</select>

W firefox działają poprawnie, w IE dostaje komunikat ze oczekiwano obietku. Tak jak mowie, podejrzewam ze blad jest w tym wywolaniu: List(this.value,this.form.investments), wydaje mi sie, ze ten drugi parametr jest niepoprawny.

Bede wdzieczny za wszelkie sugestie i pomoc.

Pozdrawiam
slammer
Zrobiłem tak:
  1. function List(x,y,i,t)
  2. {
  3. var O={
  4. 'q':{'w':'Sieci wodne i kanalizacyjne'}
  5. }
  6.  
  7. while(y[0])y.remove(0)
  8. for(i in O[x]){
  9. y.appendChild(t=document.createElement('option')).text=O[x][t.value=i]
  10.  
  11. }
  12. }
  13.  
  14. <select name="branche" onchange="List(this.value,this.form.investments);">
  15. <option value="0">-- Wybierz --</option>
  16. <option value="q">Budownictwo ochrony środowiska</option>
  17. <option value="6">Budownictwo ogólne</option>
  18. <option value="5">Budownictwo drogowe</option>
  19. <option value="4">Budownictwo przemysłowe</option>
  20. <option value="3">Budownictwo inżynierskie</option>
  21.  
  22.  
  23. <select name="investments">
  24. <option value="0">-- Wybierz branże --</option>
  25.  
  26. </form>


Wygląda to tak jakby w IE wlaściwości nie mogły być nazywane liczbami ( co wydaje się być nawet logiczne biggrin.gif )
Skyline
Fakt, z literami jako indeksy działa, ale dlaczego nie działa z indeksami numerycznymi? Gdzie moze lezec problem - pod firefox działa z indeksami numerycznymi.
slammer
Wyobraź sobie jak wygląda pobranie takiej właściwości:
O.7.27
tworząc ją bez iterału i chcąc do niej coś zapisać, na pewno dostaniesz błąd. Co innego jeśli napiszesz:
O.q.w
Pozwolę sobie przypuszczać ( nie wiem na pewno ), że w Firefox liczby wpisane w apostrofy są od razu interpretowane jako string. W IE zapewne nie ma takiego mechanizmu.
Skyline
Całkiem możliwe. Nie byloby problemu, gdybym wartosci selectów tworzy wpisujac z ręki, niestety sa one pobierane z mysql, a value w option to id z tabeli mysql... nie sa one literami, tylko wartosciami liczbowymi.
phpion
Cytat(Skyline @ 13.01.2008, 19:59:45 ) *
Całkiem możliwe. Nie byloby problemu, gdybym wartosci selectów tworzy wpisujac z ręki, niestety sa one pobierane z mysql, a value w option to id z tabeli mysql... nie sa one literami, tylko wartosciami liczbowymi.

Może w takim razie po prostu dodawaj jakiś przedrostek przed id. Np. zamiast wypisywać samo 1, 2 wypisuj id1, id2. Jeśli w tym leży problem to powinno pomóc.
Skyline
Dodałem "id" przed indeksy numeryczne w tablicy, takze wygladaja one teraz tak np "id27", pod ff działa, pod IE niestety nie.
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.