Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CSS][PHP]Problem z funkcją pokazującą diva
two
post 29.03.2014, 22:20:49
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

Ostrzeżenie: (0%)
-----


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ć ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
vonski
post 29.03.2014, 22:40:07
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
two
post 29.03.2014, 23:45:49
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

Ostrzeżenie: (0%)
-----


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ń.

Ten post edytował two 29.03.2014, 23:47:00
Go to the top of the page
+Quote Post
vonski
post 29.03.2014, 23:52:02
Post #4





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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() ?


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
two
post 30.03.2014, 00:17:46
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
alex19
post 30.03.2014, 00:39:05
Post #6





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

Ostrzeżenie: (0%)
-----


Jak chcesz mieć to jako przycisk, ale nie wysyłający formularza, to skorzystaj z
  1. <button onClick="">Oblicz</button>
Go to the top of the page
+Quote Post
vonski
post 30.03.2014, 00:39:17
Post #7





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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;


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
two
post 30.03.2014, 00:53:38
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
alex19
post 30.03.2014, 00:57:50
Post #9





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
two
post 30.03.2014, 08:44:38
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

Ostrzeżenie: (0%)
-----


Ok, a jak to mniej więcej można zrobić? Mógłbyś podać jakiś kod?
Go to the top of the page
+Quote Post
alex19
post 30.03.2014, 15:30:15
Post #11





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
two
post 30.03.2014, 20:30:35
Post #12





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
alex19
post 30.03.2014, 20:43:02
Post #13





Grupa: Zarejestrowani
Postów: 172
Pomógł: 7
Dołączył: 23.12.2005
Skąd: Wejherowo

Ostrzeżenie: (0%)
-----


Dokładnie tak miałeś zrobić. JavaScript nie jest tu potrzebny smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 15:48