Witam,

Mamy sobie formularz a w nim miedzy innymi 3 pola typu select
1. Województwa
2. Miasta (pobierane ajaxem)
3. Dzielnice (pobierane ajaxem)

Przy dodawaniu nowej kliniki lista województw generuje się od razu (jest pobierana z bazy), po wybraniu województwa generuje się lista miast które należą do wybranego województwa (również z bazy), następnie po wybraniu miasta generuje się lista dzielnic (również z bazy). Wszystko działa dobrze w momencie gdy wybieram wartości ręcznie (klikam myszą).

Problem zaczyna się w momencie gdy chce edytować dane kliniki, wybieram ją z listy klinik, otwiera się formularz który jest wypełniony informacjami o wybranej klinice i ....
1. Województwa ładują się dobrze i pole option za pomocą opcji selected również ustawia odpowiednie województwo w którym jest klinika
2. Miasta ładują się dobrze i pole option za pomocą opcji selected również ustawia odpowiednie miasto w którym jest klinika
3. Dzielnice się nie ładują, jak zmienną y zamknąłem w alert(y) to wywalił mi undefined, ale jak dodatkowo zmienną x zamknąłem w alert(x) to pokazała mi się prawidłowa wartość zmiennej y :-)

Jak bez poprawić skrypt? Proszę o jakieś wskazówki bo trochę mnie to przerasta.

Mam sobie taki kod JavaScript (JQuery):
  1. $(document).ready( function() {
  2. $(".clinic-row:odd").addClass("bgcolor1");
  3. $(".clinic-row:even").addClass("bgcolor2");
  4.  
  5. $("tr.clinic-row").hover( function() {
  6. $(this).addClass("hightlight"); }, function() { $(this).removeClass("hightlight");
  7. });
  8.  
  9. $.extend({
  10. getUrlVars: function(){
  11. var vars = [], hash;
  12. var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  13. for(var i = 0; i < hashes.length; i++)
  14. {
  15. hash = hashes[i].split('=');
  16. vars.push(hash[0]);
  17. vars[hash[0]] = hash[1];
  18. }
  19. return vars;
  20. },
  21. getUrlVar: function(name) {
  22. return $.getUrlVars()[name];
  23. }
  24. });
  25. //var allVars = $.getUrlVars();
  26. var cid = $.getUrlVar('cid');
  27.  
  28. $("#province").change(function () {
  29. var x = $("#province option:selected").val();
  30. $("#city").load("./cities.php?province="+x+"&cid="+cid);
  31. }).trigger("change");
  32.  
  33. $("#city").change(function () {
  34. var y = $("#city option:selected").val();
  35. $("#district").load("./districts.php?city="+y+"&cid="+cid);
  36. }).trigger("change");
  37. });


----------
Edited

Problem rozwiązany dzięki dokumentacji do JQuery (http://docs.jquery.com/Frequently_Asked_Questions).
Generalnie chodziło o zbindowanie nowych elementów. Ja to zrobiłem tak:
  1. $("#province").change(function () {
  2. var x = $("#province option:selected").val();
  3. $("#city").load("./cities.php?province="+x+"&cid="+cid, function() {
  4. $("#city").change(function () {
  5. var y = $("#city option:selected").val();
  6. $("#district").load("./districts.php?city="+y+"&cid="+cid);
  7. }).trigger("change");
  8. });
  9. }).trigger("change");