Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pokaż elementy obiektu o id równym x
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
d4ng
Witajcie stworzyłem sobie tablice z markami i modelami samochodów, a następnie wyeksportowałem ja do JSON'a. Po stronie klienta mam 2 selectory i gdy wybiore markę zwróci mi lisę modeli. Problem w tym że na chwile obecną zwraca mi wszystkie modele z obiektu a ja chciałbym zwrócić tylko te których(wybrano == value.marka_id). Jak to zrobić? z góry dziękuje i życzę miłego popołudnia wink.gif


  1. $.getJSON( "dane/baza.json", function(result) {
  2.  
  3. var marka = result.marka;
  4. $.each(marka, function(key, value) {
  5. $('.wybierz-marka').append('<option value="'+value.id+'">'+value.name+'</option>');
  6. });
  7.  
  8. var model = result.model;
  9. $('.wybierz-marka').on('change', function() {
  10.  
  11. var wybrano = parseInt($(this).val()); // jaką markę wybrano
  12.  
  13. $.each(model, function(wybrano, value) {
  14. $('.wybierz-model').append('<option value="'+value.id+'" data-marka="'+value.marka_id+'">'+value.name+'</option>');
  15. // zwraca wszystkie modele, a chciałbym żeby zwróciło tylko te których (wybrano == value.marka_id) czyli należą do danej marki
  16. });
  17. });
  18. });
trueblue
A co stoi na przeszkodzie, aby wprowadzić warunek dla linii 15?

Może lepszym rozwiązaniem dla Ciebie byłoby umieszczenie marek i pustego select modeli, w kodzie html na stałe.
W zależności od wybranej marki żądanie ajax odpytywałoby o modele tej marki i na tej podstawie zmieniałbyś zawartość drugiego select.
d4ng
Dziękuje za odpowiedź. Otóż już próbowałem z warunkiem i nie otrzymałem oczekiwanego rezultatu.. Tak pewnie rozwiązanie z pustym polem i ajaxem byłoby łatwiejsze, ale generuje dodatkowe zapytania do serwera...
trueblue
Sprawdź co masz w zmiennej wybrano:
console.log(wybrano);

Nie generuje dodatkowego zapytania, a na plus jest to, że zwraca mniejszą ilość danych. Gdyby użytkownik przejrzał wszystkie marki, wtedy dopiero ilość pobranych danych równałaby się ilości danych Twojego rozwiązana (zwykłe żądania+ajax).
d4ng
heheh ale siara haha.gifD jeszcze raz spróbowałem z warunkiem i działa musiałem zrobić jakąś literówkę.. haha.gif

  1. $.each(region, function(key, value) {
  2.  
  3. if(wybrano == value.countries_id){
  4. $('.wybierz-region').append('<option value="'+value.countries_id+'">'+value.name+'</option>');
  5. }
  6. });


pozdrawiam! smile.gif
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.