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.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body id="main_body" > <img id="top" src="top.png" alt=""> <div id="form_container"> <form id="form_1" class="appnitro" method="post" action=""> <div class="form_description"> </div> <ul > <li id="li_14" > <div> <!-- TU user ma wpisać cenę --> <input id="cena_on" type="text" maxlength="255" value=""/> </div> <div> <!-- TU user ma wpisać 2 cenę --> <input id="cena_pb" type="text" maxlength="255" value=""/> </div> <div> <!-- TU user ma wpisać 3 cenę --> <input id="cena_lpg" type="text" maxlength="255" value=""/> </div> <div> <!-- TU user ma wpisać nazwę która mu pasuje - nie wliczane w kalkulacje --> <input id="element_1" type="text" maxlength="255" value=""/> </div> <div> <!-- 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... --> <select class="element select medium" id="element_21"> </select> </div> <div> <!-- TU user ma wpisać wartość liczbową --> <input id="bel3" type="text" maxlength="255" value=""/> </div> <div> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (bel3 * 4) --> <input id="bel12" type="text" maxlength="255" value=""/> </div> <div> <!-- TU user ma wpisać wartość liczbową --> <input id="ver1" type="text" maxlength="255" value=""/> </div> <div> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (ver1 * 12) --> <input id="ver12" type="text" maxlength="255" value=""/> </div> <div> <!-- TU user ma wpisać wartość liczbową --> <input id="km12" type="text" maxlength="255" value=""/> </div> <div> <!-- TU user ma wpisać wartość liczbową --> <input id="koms" type="text" maxlength="255" value=""/> </div> <div> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik ((koms*wybrany z dropboxa element 21)*(km12/100)) --> <input id="spalanie12" type="text" maxlength="255" value=""/> </div> <div> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (bel12 * ver12) --> <input id="oplaty12" type="text" maxlength="255" value=""/> </div> <div> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (spalanie12+oplaty12) --> <input id="total" type="text" maxlength="255" value=""/> </div> </li> <!-- 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' --> </li> </ul> </form> </body> </html>
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.
$('#cena_on, #cena_pb, #cena_lpg, #bel3, #ver1, #km12, #koms').on('keyup', function() { var value1 = parseInt($('#cena_on').val(),10); var value2 = parseInt($('#cena_pb').val(),10); var value3 = parseInt($('#cena_lpg').val(),10); var value4 = parseInt($('#bel3').val(),10); var value5 = parseInt($('#bel12').val(),10); var value6 = parseInt($('#ver1').val(),10); var value7 = parseInt($('#ver12').val(),10); var value8 = parseInt($('#km12').val(),10); var value9 = parseInt($('#koms').val(),10); var value10 = parseInt($('#spalanie12').val(),10); var value11 = parseInt($('#oplaty12').val(),10); $('#razem').text(razem); });
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.