Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery][Autocomplete] Połączenie konkretnych miast z województwami
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
misqs.net
Witam
Korzystam z jQuery plugin: Autocomplete http://bassistance.de/jquery-plugins/jquer...n-autocomplete/

Wpisując w pole miasto ładnie mi uzupełnia miasta ale chciałbym połączyć konkretne miasta z województwami lecz nie mam pojęcia o javie i jQuery więc zwracam się do Was

  1. <form action="....." method="post" id="formularz">
  2. Województwo:<select name="wojewodztwo" title="Wybierz województwo" id="wojewodztwo">
  3. <option>dolnośląskie</option>
  4. <option>kujawsko-pomorskie</option>
  5. <option>lubelskie</option>
  6. <option>lubuskie</option>
  7. <option>łódzkie</option>
  8. <option>małopolskie</option>
  9. <option>mazowieckie</option>
  10. <option>opolskie</option>
  11. <option>podkarpackie</option>
  12. <option>podlaskie</option>
  13. <option>pomorskie</option>
  14. <option>śląskie</option>
  15. <option>świętokrzyskie</option>
  16. <option>warmińsko-mazurskie</option>
  17. <option>wielkopolskie</option>
  18. <option>zachodniopomorskie</option>
  19. Miasto: <input type="text" name="miasto" id="miasto" />
  20. </form>


[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. $("#miasto").autocomplete(mias);
  3. });
  4. var mias = "Kraków Warszawa Wrocław Poznań itd".split(" ");
[JAVASCRIPT] pobierz, plaintext


Z góry dzięki za odpowiedzi winksmiley.jpg
vokiel
Dokumentację czytałeś?

Zobacz w tej kolejności:
[JAVASCRIPT] pobierz, plaintext
  1. var mias = "Kraków Warszawa Wrocław Poznań itd".split(" ");
  2. $(document).ready(function(){
  3. $("#miasto").autocomplete(mias);
  4. });
[JAVASCRIPT] pobierz, plaintext
misqs.net
W dokumentacji znalezłem tylko takie coś:
[JAVASCRIPT] pobierz, plaintext
  1. $("#states").autocomplete(url, {
  2. extraParams: {
  3. country: function() { return $("#country").val(); }
  4. }
  5. });
[JAVASCRIPT] pobierz, plaintext

Próbowałem na kilka sposobów ale bez skutków ;(
nospor
$("#country").val(); - przeciez twoj select ma ID "wojewodztwo" a nie "country"
misqs.net
Wiem, to tylko skopiowałem z manuala aby pokazać co znalazłem:

[JAVASCRIPT] pobierz, plaintext
  1. $("#miasto").autocomplete(url, {
  2. extraParams: {
  3. wojewodztwo: function() { return $("#wojewodztwo").val(); }
  4. }
  5. });
[JAVASCRIPT] pobierz, plaintext

Tak by wyglądało moje? ale jak to połączyć z wcześniejszym?
vokiel
A tak?
[JAVASCRIPT] pobierz, plaintext
  1. var mias = ['Kraków', 'Warszawa', 'Wrocław', 'Poznań'];
  2. $(document).ready(function(){
  3. $("#miasto").autocomplete(mias);
  4. });
[JAVASCRIPT] pobierz, plaintext
misqs.net
To podpowiada tak jak i wcześniejsze, ale ja chce połączyć aby gdy wybiorę z listy rozwijanej województwo np małopolskie to aby były podpowiadane tylko miasta z małopolski a gdy wybiorę podkarpackie to tylko z podkarpackiego itd

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. $("#miasto").autocomplete(mias, {
  3. extraParams: {
  4. wojewodztwo: function() { return $("#miasto").val(); }
  5. }
  6. });
  7. });
[JAVASCRIPT] pobierz, plaintext


Zrobiłem coś takiego ale nie wiem co dalej ;/
vokiel
To może tak:
[JAVASCRIPT] pobierz, plaintext
  1. var mias = new Array(
  2. ['Kraków', 'Warszawa', 'Wrocław', 'Poznań'],
  3. ['Gdańsk', 'Gdynia', 'Sopot']
  4. );
  5.  
  6. $(document).ready(function(){
  7. $("#miasto").autocomplete(mias[$("#wojewodztwo").val()]);
  8. });
[JAVASCRIPT] pobierz, plaintext


Teraz tylko select z liczbowymi wartościami dla poszczególnych województw od 0 licząc.

  1. <select name="wojewodztwo" title="Wybierz województwo" id="wojewodztwo">
  2. <option value="0">dolnośląskie</option>
  3. <option value="1">kujawsko-pomorskie</option>
  4. <option value="2">lubelskie</option>
  5. <option value="3">lubuskie</option>
  6. <option value="4">łódzkie</option>
  7. <option value="5">małopolskie</option>
  8. <option value="6">mazowieckie</option>
  9. <option value="7">opolskie</option>
  10. <option value="8">podkarpackie</option>
  11. <option value="9">podlaskie</option>
  12. <option value="10">pomorskie</option>
  13. <option value="11">śląskie</option>
  14. <option value="12">świętokrzyskie</option>
  15. <option value="13">warmińsko-mazurskie</option>
  16. <option value="14">wielkopolskie</option>
  17. <option value="15">zachodniopomorskie</option>
misqs.net
Niestety wyświetla tylko pierwszą tablicę bez względu na województwa
Próbowałem też tak ale nic nie pomogło:
[JAVASCRIPT] pobierz, plaintext
  1. var mias = new Array();
  2. mias[0] = Array('Kraków', 'Warszawa', 'Wrocław', 'Poznań');
  3. mias[1] = Array('Gdańsk', 'Gdynia', 'Sopot');
[JAVASCRIPT] pobierz, plaintext
vokiel
Nie zadziała przekazanie tablicy, bo autocomplete jest wywoływane przy
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){});
[JAVASCRIPT] pobierz, plaintext
, z parametrem, który w tym przypadku jest pierwszym wybranym elementem tablicy.

Aby to ogarnąć należałoby przy każdej zmianie selecta wywoływać od nowa funkcję
[JAVASCRIPT] pobierz, plaintext
  1. $("#miasto").autocomplete(mias[$("#wojewodztwo").val()]);
[JAVASCRIPT] pobierz, plaintext
misqs.net
Już prawie jest OK. Mam takie coś:
  1. Województwo:<select name="wojewodztwo" title="Wybierz województwo" id="wojewodztwo" onchange="$('#miasto').autocomplete(mias[$('#wojewodztwo').val()]);" >
  2. <option value="0"></option>
  3. <option value="1">dolnośląskie</option>
  4. <option value="2">kujawsko-pomorskie</option>
  5. <option value="3">lubelskie</option>
  6. <option value="4">lubuskie</option>
  7. <option value="5">łódzkie</option>
  8. <option value="6">małopolskie</option>
  9. <option value="7">mazowieckie</option>
  10. <option value="8">opolskie</option>
  11. <option value="9">podkarpackie</option>
  12. <option value="10">podlaskie</option>
  13. <option value="11">pomorskie</option>
  14. <option value="12">śląskie</option>
  15. <option value="13">świętokrzyskie</option>
  16. <option value="14">warmińsko-mazurskie</option>
  17. <option value="15">wielkopolskie</option>
  18. <option value="16">zachodniopomorskie</option>
  19. </select>
  20. Miasto:</span> <input type="text" name="miasto" id="miasto" />

[JAVASCRIPT] pobierz, plaintext
  1. var mias = new Array(
  2. [''],
  3. ['Kraków', 'Kraków2'],
  4. ['Gdańsk', 'Gdańsk2'],
  5. ['Poznań', 'Poznań2'],
  6. ['Rzeszów', 'Rzeszów2'],
  7. ['Sopot', 'Sopot2'],
  8. ['Bobrowa', 'Bobrowa2'],
  9. ['Debica', 'Debica2'],
  10. ['Wrocław', 'Wrocław2'],
  11. ['Tarnów', 'Tarnów2'],
  12. ['Londyn', 'Londyn2'],
  13. ['Berlin', 'Berlin2'],
  14. ['Madryt', 'Madryt2'],
  15. ['Praga', 'Praga2'],
  16. ['Moskwa', 'Moskwa2'],
  17. ['Mielec', 'Mielec2'],
  18. ['Ełk', 'Ełk2']
  19. );
  20.  
  21. $(document).ready(function(){
  22. $("#miasto").autocomplete(mias[$("#wojewodztwo").val()]);
  23. });
[JAVASCRIPT] pobierz, plaintext


Gdy wybiorę np dolnośląskie to przypisuje mi do niego tylko: 'Kraków', 'Kraków2', ale gdy wybiorę kolejne bez przeładowania strony to do 'Kraków', 'Kraków2', dodaje kolejną tablicę a nie podmienia na np 'Londyn', 'Londyn2', i wtedy w podpowiedziach mam taką tablice: 'Kraków', 'Kraków2', 'Londyn', 'Londyn2'.
Gdy po kolei przejadę wszystkie województwa to będę miał wszystkie miasta w podpowiedziach wszystko do momentu przeładowania strony.
Czy da się zrobić aby podmieniało tablicę a nie dopisywało kolejne miasta?
vokiel
Proponowałbym utworzenie skryptu i użycie parametru url, ale jeśli nie chcesz, to możesz spróbować:
[JAVASCRIPT] pobierz, plaintext
  1. /* 1. */
  2. $('#miasto').flushCache();
  3. $('#miasto').autocomplete(mias[$('#wojewodztwo').val()]);
  4.  
  5. /* 2. */
  6. $('#miasto').unautocomplete();
  7. $('#miasto').autocomplete(mias[$('#wojewodztwo').val()]);
  8.  
  9. /* 3. */
  10. $('#miasto').val("").setOptions({data: mias[$('#wojewodztwo').val()});
[JAVASCRIPT] pobierz, plaintext


Albo zależności pomiędzy polami + wykorzystanie danych z adresu, nie lokalnych.

Z podanych najbardziej bym się skłaniał do metody 3.
misqs.net
Działa tak jak planowałem. Nie chcę używać skryptu ponieważ w takim przypadku podpowiedzi wyświetlają się po ok 1s a nie natychmiastowo.
Dzięki za wszelkie podpowiedzi które naprawdę mi pomogły. Myślę że komuś się jeszcze przyda taki bajer na stronkę.
kaznodzieja
A możecie powiedzieć jak przekazać wynik z pola formularz do zmiennej w php lub przesłać POST-em?
vokiel
Ajax - wysłanie zapytania do skryptu php
$.post
Pobranie wartości z pola formularza od zadanym id
[JAVASCRIPT] pobierz, plaintext
  1. $('#id_pola').val();
[JAVASCRIPT] pobierz, plaintext
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.