Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][PHP]Problem z funkcją pokazującą diva
Forum PHP.pl > Forum > Przedszkole
two
Witam,

Mam problem, ponieważ mam kalkulator, który oblicza wycenę dla produktów. Ogólnie jest tam kilka opcji wyboru oraz kilka obliczeń. Chciałbym zrobić tak, że po lewej stronie mam opcję wyboru towaru i tak dalej wraz z przyciskiem "Oblicz", a po prawej aby po kliknięciu przycisku pojawiał się wynik obliczeń. Zrobiłem to tak, że wyniki obliczeń wraz z funkcjami które to obliczają wpakowałem do jednego diva, nadałem mu w CSSie visibility:hidden i zrobiłem funkcję która odkrywa diva, czyli zmienia jego vissibility na visible. Na przycisku w onlick podpiąłem tę funkcję i jest ok, ale wyniki pojawiają mi się (a raczej migną) na moment i znikają. Macie może jakieś pomysły jak sobie z tym poradzić ?
vonski
Trochę ciężko, biorąc pod uwagę, że nie pokazałeś nawet linijki kodu.
Ale zgaduję, że strona w rzeczywistości się przeładowuje, dlatego wygląda to jakby wyniki tylko mignęły. Spróbuj zwrócić FALSE w funkcji, którą pokazujesz owego diva, a jak to nie pomoże, to pokaż jakiś kod, to wtedy będzie wiadomo z czym mamy do czynienia.
two
Ok, więc skrypt zmieniający widoczność diva wygląda następująco:

  1. <script type="text/javascript" language="JavaScript">
  2. function HideContent(d)
  3. {
  4.  
  5.  
  6. document.getElementById(d).style.visibility = "hidden";
  7. }
  8.  
  9. function ShowContent(d)
  10. {
  11.  
  12. document.getElementById(d).style.visibility = "visible";
  13. }
  14.  
  15. </script>
  16.  


Natomiast podpięcie pod przycisk wysyłania następująco:

  1. <input type="submit" value="Oblicz" onclick="java script:ShowContent('box');" />


Div "box" to są wyniki obliczeń.
vonski
Input typu "submit" domyślnie wysyła formularz, więc tak jak napisałem w pierwszym poście, strona się przeładowuje i dlatego widzisz tylko to "mignięcie". Czy próbowałeś dodać: return false; w funkcji showContent() ?
two
Właśnie teraz próbowałem i nic :/. Masz rację z tym przeładowywaniem, ponieważ jak dam tę samą funkcję na przykład na jakiejś grafice to działa bez problemu. Chciałbym tylko to jakoś podpiąć pod ten przycisk.
alex19
Jak chcesz mieć to jako przycisk, ale nie wysyłający formularza, to skorzystaj z
  1. <button onClick="">Oblicz</button>
vonski
W onclick daj tak:

  1. <input type="submit" value="Oblicz" onclick="return ShowContent('box');" />


no i w showContent() oczywiście na końcu: return false;
two
Ok, teraz wyświetla diva z wynikami, ale nie oblicza wyników. Masz może na to jakiś sposób? Potrzebujesz może fragment kodu?
alex19
Cały twój problem polega na tym że JS tylko ukrywa/odkrywa DIV, a obliczeń zapewne dokonuje PHP, które musi przeładować stronę.

Zamiast tego JS mógłbyś przekazywać sobie parametr podczas wysyłania tego formularza(musisz go wysłać żeby policzyć), że chcesz widzieć obliczenia i że DIV ma tym razem być odkryty.
two
Ok, a jak to mniej więcej można zrobić? Mógłbyś podać jakiś kod?
alex19
Tu trzeba wymyślić coś sensownego smile.gif

Możesz dopisać parametr name do przycisku obliczania i podczas przetwarzania formularza sprawdzać czy właśnie ten przycisk został wciśnięty i dokonywać obliczeń.

  1.  
  2. In HTML:
  3.  
  4. <input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
  5. <input type="submit" id="btnDelete" name="btnDelete" value="Delete" />
  6.  
  7. In PHP:
  8.  
  9. if (isset($_POST["btnSubmit"])){
  10. // "Save Changes" clicked
  11. } else if (isset($_POST["btnDelete"])){
  12. // "Delete" clicked
  13. }
  14.  
two
Ok, co prawda uzyskałem to co chciałem, ale w nieco inny sposób. Otóż jak chciałem podpiąć wywoływanie funkcji showContent pod ten isset($_POST["btnSubmit"]) to wywalało mi błąd. Zrobiłem to w prostszy sposób, ale troszkę bardziej łopatologiczny smile.gif. Zrezygnowałem z tej funkcji showContent i do każdego wyniku dałem ten warunek isset($_POST["btnSubmit"]) i ostatecznie uzyskałem to co chciałem. Także wielkie dzięki za pomoc i podsunięcie tego rozwiązania.
alex19
Dokładnie tak miałeś zrobić. JavaScript nie jest tu potrzebny 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.