Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][HTML] Różne działania na liczbach z formularza - brak umiejętności, Jak wyświetlić wynik równań?
encoresin
post 28.02.2018, 16:59:41
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


Witam,

Kiedyś zrobiłem sobie w Excelu (i tam zrobić to to pikuś) pewien kalkulatorek, który oblicza mi pewne rzeczy wprowadzone w tabelę. Teraz chciałbym udostępnić to rozwiązanie odwiedzającym moją stronę gościom.

Jako, że na PHP znam się o włos lepiej niż na JS, zacząłem tam poszukiwania. Wszędzie odradzano, bo przecież łatwiej zrobić to w JS. No to poszukałem jakiś gotowców i za chiny nie rozumiem. Po kilkunastu stronach znalazłem jakiś skrypcik, który w sumie wystarczyło rozwinąć do moich potrzeb. Zmiana ich danych na moje pozwoliła wyświetlić mi ich wynik w moim skrypcie - trochę działa - sukces. Dalej, chciałem już dodać moje obliczenia. I tu już przestało działać. Nie mam kompletnie pojęcia co mam robić... Skrypt męczę na jsbin.com, ale i tak nie wychodzi.

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Calc</title>
  6. <script type="text/javascript" src="view.js"></script>
  7.  
  8. </head>
  9. <body id="main_body" >
  10.  
  11. <img id="top" src="top.png" alt="">
  12. <div id="form_container">
  13.  
  14. <h1><a>Calc</a></h1>
  15. <form id="form_1" class="appnitro" method="post" action="">
  16. <div class="form_description">
  17. <p>Desc.</p>
  18. </div>
  19. <ul >
  20.  
  21. <li id="li_14" >
  22. <label class="description" for="cena_on">cena on </label>
  23. <div>
  24. <!-- TU user ma wpisać cenę -->
  25. <input id="cena_on" type="text" maxlength="255" value=""/>
  26. </div>
  27. </li> <li id="li_15" >
  28. <label class="description" for="cena_pb">cena pb </label>
  29. <div>
  30. <!-- TU user ma wpisać 2 cenę -->
  31. <input id="cena_pb" type="text" maxlength="255" value=""/>
  32. </div>
  33. </li> <li id="li_16" >
  34. <label class="description" for="cena_lpg">cena lpg </label>
  35. <div>
  36. <!-- TU user ma wpisać 3 cenę -->
  37. <input id="cena_lpg" type="text" maxlength="255" value=""/>
  38. </div>
  39. </li> <li class="section_break">
  40. <h3>Section Break</h3>
  41. <p></p>
  42. </li> <li id="li_1" >
  43. <label class="description" for="element_1">Nazwa </label>
  44. <div>
  45. <!-- TU user ma wpisać nazwę która mu pasuje - nie wliczane w kalkulacje -->
  46. <input id="element_1" type="text" maxlength="255" value=""/>
  47. </div>
  48. </li> <li id="li_21" >
  49. <label class="description" for="element_21">rodzaj paliwa </label>
  50. <div>
  51. <!-- TU user ma wybrać opcję - i ta opcja będzie posiadała jedną z wartości podanej u góry w cenie 1, 2 lub 3. Tu na pewno siedzi błąd, ale nie umiem zmusić skryptu do liczenia 4 pól, a co dopiero tego... -->
  52. <select class="element select medium" id="element_21">
  53. <option value="" selected="selected"></option>
  54. <option value="cena_on" >ON</option>
  55. <option value="cena_pb" >PB</option>
  56. <option value="cena_lpg" >LPG</option>
  57. </select>
  58. </div>
  59. </li> <li class="section_break">
  60. <h3>Section Break</h3>
  61. <p></p>
  62. </li> <li id="li_2" >
  63. <label class="description" for="bel3">Dodatek 3 </label>
  64. <div>
  65. <!-- TU user ma wpisać wartość liczbową -->
  66. <input id="bel3" type="text" maxlength="255" value=""/>
  67. </div>
  68. </li> <li id="li_3" >
  69. <label class="description" for="bel12">Dodatek 12 </label>
  70. <div>
  71. <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (bel3 * 4) -->
  72. <input id="bel12" type="text" maxlength="255" value=""/>
  73. </div>
  74. </li> <li class="section_break">
  75. <h3>Section Break</h3>
  76. <p></p>
  77. </li> <li id="li_5" >
  78. <label class="description" for="ver1">ube 1 </label>
  79. <div>
  80. <!-- TU user ma wpisać wartość liczbową -->
  81. <input id="ver1" type="text" maxlength="255" value=""/>
  82. </div>
  83. </li> <li id="li_6" >
  84. <label class="description" for="ver12">ube 12 </label>
  85. <div>
  86. <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (ver1 * 12) -->
  87. <input id="ver12" type="text" maxlength="255" value=""/>
  88. </div>
  89. </li> <li class="section_break">
  90. <h3>Section Break</h3>
  91. <p></p>
  92. </li> <li id="li_4" >
  93. <label class="description" for="km12">kmR </label>
  94. <div>
  95. <!-- TU user ma wpisać wartość liczbową -->
  96. <input id="km12" type="text" maxlength="255" value=""/>
  97. </div>
  98. </li> <li class="section_break">
  99. <h3>Section Break</h3>
  100. <p></p>
  101. </li> <li id="li_7" >
  102. <label class="description" for="koms">hovelL</label>
  103. <div>
  104. <!-- TU user ma wpisać wartość liczbową -->
  105. <input id="koms" type="text" maxlength="255" value=""/>
  106. </div>
  107. </li> <li class="section_break">
  108. <h3>Section Break</h3>
  109. <p></p>
  110. </li> <li id="li_9" >
  111. <label class="description" for="spalanie12">spalanie12 </label>
  112. <div>
  113. <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik ((koms*wybrany z dropboxa element 21)*(km12/100)) -->
  114. <input id="spalanie12" type="text" maxlength="255" value=""/>
  115. </div>
  116. </li> <li id="li_8" >
  117. <label class="description" for="oplaty12">oplata </label>
  118. <div>
  119. <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (bel12 * ver12) -->
  120. <input id="oplaty12" type="text" maxlength="255" value=""/>
  121. </div>
  122. </li> <li class="section_break">
  123. <h3>Section Break</h3>
  124. <p></p>
  125. </li> <li id="li_11" >
  126. <label class="description" for="total">RAZEM </label>
  127. <div>
  128. <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (spalanie12+oplaty12) -->
  129. <input id="total" type="text" maxlength="255" value=""/>
  130. </div>
  131. </li>
  132. <!-- Zanim zacząłem grzebać to tu ładnie wyświetlał się wynik... Mój HTML posiadał przycisk, a skrypt liczył wszystko w tle, więc nie był wymagany - stąd na początku HTML'u ten 'POST' -->
  133. Razem: <span id="razem"> </span><br/>
  134.  
  135.  
  136. </li>
  137. </ul>
  138. </form>
  139. </body>
  140. </html>
  141.  


Jeżeli o JS chodzi to bardzo szybko stanąłem... zmieniłem tylko to "eval(value10 + value11);" na swoje dane i skrypt padł... Więc nie potrafię zrobić nawet najprostszego równania.
  1.  
  2. $('#cena_on, #cena_pb, #cena_lpg, #bel3, #ver1, #km12, #koms').on('keyup', function() {
  3. var value1 = parseInt($('#cena_on').val(),10);
  4. var value2 = parseInt($('#cena_pb').val(),10);
  5. var value3 = parseInt($('#cena_lpg').val(),10);
  6. var value4 = parseInt($('#bel3').val(),10);
  7. var value5 = parseInt($('#bel12').val(),10);
  8. var value6 = parseInt($('#ver1').val(),10);
  9. var value7 = parseInt($('#ver12').val(),10);
  10. var value8 = parseInt($('#km12').val(),10);
  11. var value9 = parseInt($('#koms').val(),10);
  12. var value10 = parseInt($('#spalanie12').val(),10);
  13. var value11 = parseInt($('#oplaty12').val(),10);
  14.  
  15.  
  16. var razem = eval(value10 + value11);
  17. $('#razem').text(razem);
  18.  
  19. });
  20.  


Jak już to zadziała i będzie mnie słuchać to z tego co zauważyłem - gdy są puste pola wynik to NaN - będę chciał to zmienić na informacje o pustym polu, ale sam chcę spróbować to zrobić.

Poproszę o podpowiedzi, nie od razu gotowca.
Go to the top of the page
+Quote Post
trzczy
post 28.02.2018, 18:49:31
Post #2





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

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


Skrypt padł? Ale jaki błąd i w której linii?
Go to the top of the page
+Quote Post
encoresin
post 28.02.2018, 19:07:53
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


Chodziło mi raczej o brak wyniku tam gdzie chciałbym by był. Wiem, że robię źle, ale nie wiem co.
Go to the top of the page
+Quote Post
viking
post 28.02.2018, 19:10:48
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A po co tam eval jak zwykle dodawanie robisz?


--------------------
Go to the top of the page
+Quote Post
encoresin
post 28.02.2018, 19:22:36
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


Chyba nie wyraziłem się jasno - skopiowałem czyis kod, by przerobić go do swoich potrzeb KOMPLETNIE nie umiejąc JS arrowheadsmiley.png Więc nawet nie wiem co to jest :S


EDIT: parseInt($('#oplaty12').val(),10);

Z tej linijki np. rozumiem tylko to, że łącze ID w chcianym formularzu biggrin.gif

Ten post edytował encoresin 28.02.2018, 19:24:51
Go to the top of the page
+Quote Post
viking
post 28.02.2018, 19:30:37
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


To źle rozumiesz bo nic nie łączysz w tej linii. https://jsfiddle.net/zctb4bx9/2/


--------------------
Go to the top of the page
+Quote Post
encoresin
post 28.02.2018, 19:42:00
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


No łączę wpisując "oplaty12". Nie wiem jak to poprawnie nazwać. Odnoszę się? Nie ważne.

Czyli cały ten skrypt mogę zrobić w ten sposób? Nie trzeba nic przed tym równaniem pisać?
Go to the top of the page
+Quote Post
viking
post 28.02.2018, 19:45:17
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A działa w linku? Skoro tak to masz odpowiedź.


--------------------
Go to the top of the page
+Quote Post
encoresin
post 28.02.2018, 19:55:22
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


Cytat(viking @ 28.02.2018, 19:45:17 ) *
A działa w linku? Skoro tak to masz odpowiedź.


Dziękuje serdecznie za pomoc. Pytam, nie bo jestem robotem, a dlatego, że wcześniej było tam coś przed, do dodawania zrobiłeś bez - ale mam też mnożenie, dzielenie. Może tam trzeba będzie znów coś dodać?


EDIT: Przykładowo teraz chcę bel3 pomnożyć przez 4 - ale się nie da. Próbowałem w nawias, w " i w '. A więc muszę specjalnie nową linie zapisać (var value....) czy coś dopisać?

Ten post edytował encoresin 28.02.2018, 20:05:34
Go to the top of the page
+Quote Post
viking
post 28.02.2018, 20:03:34
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


To i tak jedno jest pewne. W 99.9% przypadków eval nie powinno się znajdować w żadnym kodzie.


--------------------
Go to the top of the page
+Quote Post
encoresin
post 28.02.2018, 20:43:59
Post #11





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


Podstawowe ogarnięte. Teraz dosyć trudne...

Dropdown menu "element_21". Jak to połączyć z cenami z pierwszych trzech pól formularza?
Go to the top of the page
+Quote Post
viking
post 28.02.2018, 20:52:51
Post #12





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


A konkretnie?


--------------------
Go to the top of the page
+Quote Post
encoresin
post 28.02.2018, 20:58:50
Post #13





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


  1. <ul >
  2.  
  3. <li id="li_14" >
  4. <label class="description" for="cena_on">cena on </label>
  5. <div>
  6. <!-- TU user ma wpisać cenę -->
  7. <input id="cena_on" type="text" maxlength="255" value=""/>
  8. </div>
  9. </li> <li id="li_15" >
  10. <label class="description" for="cena_pb">cena pb </label>
  11. <div>
  12. <!-- TU user ma wpisać 2 cenę -->
  13. <input id="cena_pb" type="text" maxlength="255" value=""/>
  14. </div>
  15. </li> <li id="li_16" >
  16. <label class="description" for="cena_lpg">cena lpg </label>
  17. <div>
  18. <!-- TU user ma wpisać 3 cenę -->
  19. <input id="cena_lpg" type="text" maxlength="255" value=""/>
  20. </div>
  21. </li>


Z tych pól ma być wzięta wartość dla wybranej opcji z dropdown menu

  1. <label class="description" for="element_21">rodzaj paliwa </label>
  2. <div>
  3. <!-- TU user ma wybrać opcję - i ta opcja będzie posiadała jedną z wartości podanej u góry w cenie 1, 2 lub 3. Tu na pewno siedzi błąd, ale nie umiem zmusić skryptu do liczenia 4 pól, a co dopiero tego... -->
  4. <select class="element select medium" id="element_21">
  5. <option value="" selected="selected"></option>
  6. <option value="cena_on" >ON</option>
  7. <option value="cena_pb" >PB</option>
  8. <option value="cena_lpg" >LPG</option>
  9. </select>
  10. </div>
  11. </li>



Czyli zakładając, że w pierwsze pole wpiszę 1, w drugie 2, w trzecie 3. To wybierając coś z dropdown menu np ON - opcja pierwsza, to właśnie 1 będzie brane pod uwagę. Ktoś uzupełni wszystko i stwierdzi, że to miał być PB, to wybierając z Dropdown zmieni 1 na opcję drugą czyli przyporządkowana jej liczba 2 i obliczenia zmienią się zgodnie z tym.
Go to the top of the page
+Quote Post
viking
post 1.03.2018, 09:08:07
Post #14





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Zrób zdarzenie change na select i po wybraniu odczytuj wartość danego pola. Na forum pomagamy w problemach a nie pisać cały kod za kogoś. Od tego jest dział zleceń.


--------------------
Go to the top of the page
+Quote Post
encoresin
post 1.03.2018, 13:04:13
Post #15





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 6.05.2017

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


Zgadzam się. Pewnie ktoś by to zrobił w 5 minut. Inaczej, jakbyś chciał pobawić się czymś nowym, mając nawet jakiś cel to pewnie chciałbyś się pomęczyć troszkę i głupio popytać tak by choć trochę dziubnąć czegoś nowego.

Tak też kiedyś uczyłem się HTML'a. Blogi w sumie nie miały dużo z nim wspólnego, ale było trzeba dodawać obrazki. Więc coś się tam powąchało. Później już na ftp się robiło w WYSIWYG i ewentualne edycje kodu. I tak na głupka szło się sporo nauczyć. Później było podobnie z PHP. Tylko, że w tym się aż tak nie zagłębiałem - widząc kod wiem co edytować by dostać co chcę.

Także wolę się jak kretyn popytać i sam zobaczyć co się stanie gdy... Nie chcę się uczyć całości od podstaw, chcę tylko zobaczyć z czym to się je. Poza tym skrypt jest tak mały i żałosny, że nie będzie tu dużo do roboty.

Mam nadzieję, że rozumiesz.
Go to the top of the page
+Quote Post
viking
post 1.03.2018, 13:10:32
Post #16





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Niestety nie. Metoda na żula na mnie nie działa. Poświęć godzinę, poszukaj i nauczysz się czegoś nowego.Trudne nie jest, wystarczy trochę usiąść i chcieć poznać podstawy (zdarzenia to totalne podstawy JS).


--------------------
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: 26.04.2024 - 11:05