Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z checkboxami
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
szlipek
Mianowicie mam 2 grupy checkboxów jedna grupa to np pojemności silnika czyli 1,6 1,8 2,0 itd a druga to kolor no i wszystko to łączy mi się z bazą danych i poprostu gdy odznaczam jakiś checkbox np z kolorem żółtym to znikają z listy wszystkie samochody które miały kolor żółty potem odznaczam np 1,6 i odpadają samochody które są żółte i miały pojemność 1,6 i wszystko mi działa błąd natomiast wyskakuje gdy np. zaznaczam spowrotem kolor żółty ponieważ wyświetlają mi się samochody które miały kolor żółty(czyli ok) ale przy okazji wyświetlają mi się też samochody o pojemności 1,6 mimo że checkbox z pojemnością 1,6 jest odznaczony. Nie wiem jak to zrobić może mi ktoś pomóc?
kamil4u
Użyj AJAX-a i za pomocą niego pobieraj odpowiednie dane z bazy danych. Pomyśl też o jakimś cache-u, bo może się zdarzyć, że baza nie wyrobi smile.gif Poczyta też o zdarzeniach - w tym wypadku onchange.
szlipek
Ale ja pobieram to wszystko za pomocą AJAXA i wszystko mi działa tylko nie wiem jak to zrobić, żeby sprawdzało czy checkbox z innej grupy został odznaczony albo zaznaczony
nospor
No ale pokaz kod. Skad mamy wiedziec co jest źle jak kodu nie widzimy.
szlipek
  1. function przerysuj(checkbox,kolor)
  2. {
  3. // jeśli kliknięty checkbox jest zaznaczony, to wywołujemy funkcję z parametrem, mówiącym że ma pokazać markery
  4. // jeśli kliknięty checkbox nie jest zaznaczony, to wywołujemy funkcję z parametrem, mówiącym że ma ukryć markery
  5. if(document.getElementById(checkbox).checked)
  6. ukryjPokazKategorie(kolor,true);
  7. else
  8. ukryjPokazKategorie(kolor,false);
  9. odswiezSidebar();
  10. }
  11.  
  12.  
  13. // ta funkcja pokazuje lub ukrywa markery danej kategorii, zgodnie z przekazanymi argumentami
  14. function ukryjPokazKategorie(kolor,pokaz)
  15. {
  16. // kategoria oznacza id kategorii której widzialność trzeba zmienić
  17. // jeśli pokaz = false, to znaczy że mamy ukryć, w przeciwnym wypadku pokazać
  18.  
  19. // dla każdego z markerów
  20. for(var i=0; i<markery.length; i++)
  21. {
  22. // jeśli poszukiwana kategoria jest kategorią markera
  23. if(markery[i].kolor==kolor)
  24. {
  25. // to go ukrywamy lub pokazujemy, w zależności od argumetu pokaz
  26. if(pokaz==true)
  27. markery[i].show();
  28. else
  29. markery[i].hide();
  30. }
  31. }
  32. }
  33.  
  34. function pojemnosc(checkbox,pojemnosc)
  35. {
  36.  
  37. if(document.getElementById(checkbox).checked)
  38. ukryjPokazPojemnosc(pojemnosc,true);
  39. else
  40. ukryjPokazPojemnosc(pojemnosc,false);
  41. odswiezSidebar();
  42. }
  43. function ukryjPokazPojemnosc(pojemnosc,pokaz)
  44. {
  45.  
  46. for(var i=0; i<markery.length; i++)
  47. {
  48.  
  49. if(markery[i].pojemnosc==pojemnosc)
  50. {
  51. if(pokaz==true)
  52. markery[i].show();
  53. else
  54. markery[i].hide();
  55. }
  56. }
  57. }
  58.  


i html
  1. <!-- pole z checkboxami -->
  2. <div id="kategorieBelka" style="color: #666; font-style: italic;">
  3. <input checked="checked" id="kol1" type="checkbox" onclick="przerysuj('kol1','czarny')" /> czarny
  4. <input checked="checked" id="kol2" type="checkbox" onclick="przerysuj('kol2','biały')" /> biały
  5. <input checked="checked" id="kol3" type="checkbox" onclick="przerysuj('kol3','czerwony')" /> czerwony
  6. <input checked="checked" id="kol4" type="checkbox" onclick="przerysuj('kol4','żółty')" /> żółty
  7. </div>
  8. <tr><td><div id="otoczenieBelka" style="color: #666; font-style: italic;">
  9. <input checked="checked" id="poj1" type="checkbox" onclick="pojemnosc('poj1','1,6')" /> 1,6
  10. <input checked="checked" id="poj2" type="checkbox" onclick="pojemnosc('poj2','1,8')" /> 1,8
  11. <input checked="checked" id="poj3" type="checkbox" onclick="pojemnosc('poj3','2,0')" /> 2,0
  12. <input checked="checked" id="poj4" type="checkbox" onclick="pojemnosc('poj4','2,5')" /> 2,5
  13. </div></td></tr>
  14.  
nospor
No ale wiesz na czym blad polega?
Pokazując jakis marker, sprawdzasz tylko jedną wartosc, którą akurat kliknąłeś w danym checkbox. Przy chowaniu to mialo sens, bo jak odznaczałes jedną wartosc, to marker nie zaleznie czy mial inne czy nie, to nie mial juz tej jednej i musial zniknac. Jedna przy pokazywaniu marker moze sie pokazac dopiero wtedy, gdy bedzie mial spelnione wszystkie wartosci a ty niestety sprawdzasz tylko tę jedną aktualnie klikniętą. Przy pokazywaniu musisz przeleciec po wszystkich checkboxach i sprawdzic czy dany marker zawiera wszystkie wartosci z zaznaczonych checkboxów i dopiero potem wyswietlic.

szlipek
Masz może jakiś przykład jak to zrobić bo szczerze mówiąć z JavaScript to dopiero zaczynam zabawę i tak naprawdę nie wiem jak to zrobić pewnie jakoś na if tak? jakbyś pokazał mi jakiś przykładowy kod to by było super
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.