Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zrobić prostą wyszukiwarkę/filtr produktów z listą z radio?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
marcus755
Hej,

Jak zrobić prostą wyszukiwarkę/filtr produktów, gdzie po zaznaczeniu odpowiednich radio, a potem kliknięciu buttona "search" przefiltrują się nam divy z zawartością?

  1.  
  2. <div class="block">
  3.  
  4. <h3 class="search">Kategoria 1</h3>
  5. <input name="kat_1" type="radio" value="0"><label for="kat_1">Pozycja 1 kat1</label><br>
  6. <input name="kat_1" type="radio" value="1"><label for="kat_1">Pozycja 2 kat1</label><br>
  7. <input name="kat_1" type="radio" value="2"><label for="kat_1">Pozycja 3 kat1</label><br>
  8. </div>
  9.  
  10. <div class="block">
  11. <h3 class="search">Kategoria 2</h3>
  12. <input name="kat_2" type="radio" value="0"><label for="kat_2">Pozycja 1 kat2</label><br>
  13. <input name="kat_2" type="radio" value="1"><label for="kat_2">Pozycja 1 kat2</label><br>
  14. <input name="kat_2" type="radio" value="2"><label for="kat_2">Pozycja 1 kat2</label>
  15. </div>
  16.  
  17. <div class="block">
  18. <h3 class="search">Kategoria 3</h3>
  19. <input name="kat_3" type="radio" value="0"><label for="kat_3">Pozycja 1 kat3</label><br>
  20. <input name="kat_3" type="radio" value="1"><label for="kat_3">Pozycja 1 kat3</label><br>
  21. <input name="kat_3" type="radio" value="2"><label for="kat_3">Pozycja 1 kat3</label>
  22. </div>
  23.  
  24. <div class="bottom"><input name="SEARCH" type="submit" value="SEARCH" class="btn_search"></div>
  25.  
  26. </div>
  27.  


Zwykły filtr może wyglądać np. tak:

  1. <nav>
  2. <a href="#" id="prod1">link 1</a>
  3. <a href="#" id="prod2">link 2</a>
  4. <a href="#" id="prod3">link 3</a>
  5. <a href="#" id="prod4">link 4</a>
  6. </nav>
  7.  
  8. <div class="box prod1 prod2">box prod1 prod2</div>
  9. <div class="box prod1 prod2">box prod1 prod2</div>
  10. <div class="box prod1 prod3">box prod1 prod3</div>
  11. <div class="box prod1 prod3">box prod1 prod3</div>
  12. <div class="box prod1 prod2">box prod1 prod2</div>
  13. <div class="box prod1 prod4">box prod1 prod4</div>
  14. <div class="box prod1 prod4">box prod1 prod4</div>
  15. <div class="box prod1 prod4">box prod1 prod4</div>
  16.  
  17. $(function(){
  18. $('nav>a').click(function(e){
  19. e.preventDefault();
  20. var id=$(this).attr('id');
  21. $('div.box:not(.'+id+')').hide('slow');
  22. $('div.'+id).show('slow');
  23. });
  24. });
  25. </script>
  26.  


Jak przekształcić powyższy skrypt, ew. jakiś inny przykład, który będzie filtrował kategorie i produkty po zaznaczeniu radio i naciśnięciu buttona "Search"?
fizzlebubble
Proszę, submit jest niepotrzebny: http://jsbin.com/ukeyec/1/edit
marcus755
fajnie działa, bardzo jesteś blisko tego, o co mi chodziło, ale potrzebuję coś takiego jak podałeś w przykładzie, z tym że teraz jak klikam w radio w danej kategorii,
to znika mi zawartość z jakiejś kategorii po zaznaczeniu radio i nie mogę już zmienić w danej kategorii pozycji tej kategorii.
Chodziło mi o to, by:

Po wybraniu danej pozycji (zaznaczeniu radio) w kategorii
- nie blokowało mi się radio, tak że nie mogę zmienić na inne (tylko jedno) radio w danej kategorii
- aby samo zaznaczenie radio nie powodowało jeszcze akcji filtrowania, a dopiero kliknięcie buttona search wywoływało tę akcję

np. Wybieram sobie dowolne (oczywiście tylko jedno) radio z pierwszej kategorii, dowolne z drugiej kategorii, i trzecie,
klikam button search i dopiero wtedy, i w zależności, które pozycje (radio) w danej kategorii wybrałem, po tych mi się filtruje...
Czyli kliknięcie buttona search powoduje wywołanie funkcji, która sprawdza jakie radio było zaznaczone w pierwszej, drugiej i trzeciej kategorii,
i w zależności od tego daje efekt taki, że pokazują się divy z produktami powiązane z poszczególnymi kategoriami, tak jak ma to często miejsce w sklepach internetowych,
że mogę sobie przefiltrować produkt w zależności od kategorii, w jakich się znajdują...

jak to zrobić?
fizzlebubble
Jeśli chcesz abym Ci pomógł (teraz i następnym razem) to zawsze markup (html, css) wrzucaj mi na jsbin i w temacie podawaj link. W tej wklejcie co Ci wstawiłem popraw html tak aby dzialal jak chcesz i pokombinujemy coś z js'em.
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.