Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne selecty
Forum PHP.pl > Forum > XML, AJAX
Arrow
witam,

troszke braklo mi juz pomyslow jak rozwiazac ten problem, prosta funkcja js+advAJAX:
Kod
function miasta(i) {
advAJAX.setDefaultParameters({
onInitialization : function(obj) {document.getElementById(obj.tag).innerHTML = "Przygotowanie...";},
onLoading : function(obj) { document.getElementById(obj.tag).innerHTML = "Ładowanie danych..."; },
onSuccess : function(obj) { document.getElementById(obj.tag).innerHTML = obj.responseText +"&nbsp;<img src=\"grafika/dodaj.gif\" border=\"0\ align=\center\">"; },
onError : function(obj) { document.getElementById(obj.tag).innerHTML = "Błąd..."; }
});
advAJAX.get({ url: "php/ajax/miasta.php?id_w="+i, tag: "miasta" });
advAJAX.setDefaultParameters({});
}


select z wojewodztwami:
  1. <select name="wojewodztwa" onchange="miasta(this.value);">
  2. <option value="0">Wybierz wojewodztwo</option>
  3. <option value="2" onclick="miasta(this.value);">Podkarpackie</option>
  4. <option value="1" onclick="miasta(this.value);">Wielkopolskie</option></select>


no i w ff wszystko gra, w IE owsze za pierwszym razem zostaje wygenerowany select z odpowiednimi miastami, natomiast w razie zmiany wojewodztwa juz nie (zdzarzenie onclick nie dziala)
TomASS
Tutaj masz przykład.

I zamiast onClick daj onChange na całego SELECTA:
  1. <select name="wojewodztwa" id="wojewodztwa" onchange="getRecords();">
Arrow
witam,

dzieki za odpowiedz smile.gif

onChange juz jest od poczatku bylo, onClick dodalem poniewaz z niewadomych mi przyczyn onChange dzialalo ale raz pozniejsze zmiany wojewodztwa nie powodowaly wczytania nowych miast

problem jest tylko w IE, a niestety aplikacja bedzie obslugiwana glownie z tej przegladarki, nie chce rezygnowac z ajaxa

nic przeczytam Twoj post moze mi sie cos urodzi smile.gif

IE genreuje blad - Obiekt nie obsluguje tej wlasciwosci lub metody
Linia 184 wiersz 1 -
  1. <select name="wojewodztwa" id="wojewodztwa" onchange="miasta();">


---------------------------------------------------------------------------------------------------
Problem rozwiazany uf smile.gif, okazuje sie, ze chodzilo o to, ze odpowiedz byla generowana ze znacznikiem <selec> i to wszytsko blokowalo w IE aaevil.gif oto kompletny kod:

  1. function $(id)
  2. {
  3.  return document.getElementById(id);
  4. }
  5.  
  6.  
  7. function miasta()
  8. {
  9.  advAJAX.get({
  10.    url: "php/ajax/miasta.php?id_w="+$("wojewodztwa").value,
  11.    tag: "miasta",
  12.    onInitialization : function(obj) {$(obj.tag).innerHTML = "Przygotowanie..."; $("wojewodztwa").disabled = true;},
  13.    onLoading : function(obj) {$(obj.tag).innerHTML = "Ładowanie danych...";},
  14.    onSuccess : function(obj) {$(obj.tag).innerHTML = "<select id=\"m\" name=\"miastaa\">"+obj.responseText +"</select>&nbsp;<img src=\"grafika/dodaj.gif\" border=\"0\ align=\center\">"; $("wojewodztwa").disabled = false;},
  15.    onError : function(obj) {$(obj.tag).innerHTML = "Błąd..."; }
  16.  });
  17. }

jak widac rozwiazalem to w soposb taki ze odpowiedz jest wklejana miedzy znaczniki <select> a nie generowana z nimi

no w sumie IE i tak wyrzuca bledy js ale to moze nastepny razem zrobie ... winksmiley.jpg
TomASS
Czyli jak dobrze rozumiem w obj.responseText dostajesz ileś tam optionów?
<option>Wrocław</option>
<option>Legnica</option>
<option>Opole</option>
?
Przecierz możesz użyć:
Kod
new Option(nazwa[i],ID[i]);

Polecam tą [quirks mode] stronkę.
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.