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.
<!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"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<img id="top" src="top.png" alt=""> <div id="form_container">
<form id="form_1" class="appnitro" method="post" action=""> <div class="form_description">
<label class="description" for="cena_on">cena on
</label> <!-- TU user ma wpisać cenę -->
<input id="cena_on" type="text" maxlength="255" value=""/> <label class="description" for="cena_pb">cena pb
</label> <!-- TU user ma wpisać 2 cenę -->
<input id="cena_pb" type="text" maxlength="255" value=""/> <label class="description" for="cena_lpg">cena lpg
</label> <!-- TU user ma wpisać 3 cenę -->
<input id="cena_lpg" type="text" maxlength="255" value=""/> </li> <li class="section_break"> <label class="description" for="element_1">Nazwa
</label> <!-- TU user ma wpisać nazwę która mu pasuje - nie wliczane w kalkulacje -->
<input id="element_1" type="text" maxlength="255" value=""/> <label class="description" for="element_21">rodzaj paliwa
</label> <!-- 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"> </li> <li class="section_break"> <label class="description" for="bel3">Dodatek 3
</label> <!-- TU user ma wpisać wartość liczbową -->
<input id="bel3" type="text" maxlength="255" value=""/> <label class="description" for="bel12">Dodatek 12
</label> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (bel3 * 4) -->
<input id="bel12" type="text" maxlength="255" value=""/> </li> <li class="section_break"> <label class="description" for="ver1">ube 1
</label> <!-- TU user ma wpisać wartość liczbową -->
<input id="ver1" type="text" maxlength="255" value=""/> <label class="description" for="ver12">ube 12
</label> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (ver1 * 12) -->
<input id="ver12" type="text" maxlength="255" value=""/> </li> <li class="section_break"> <label class="description" for="km12">kmR
</label> <!-- TU user ma wpisać wartość liczbową -->
<input id="km12" type="text" maxlength="255" value=""/> </li> <li class="section_break"> <label class="description" for="koms">hovelL
</label> <!-- TU user ma wpisać wartość liczbową -->
<input id="koms" type="text" maxlength="255" value=""/> </li> <li class="section_break"> <label class="description" for="spalanie12">spalanie12
</label> <!-- 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=""/> <label class="description" for="oplaty12">oplata
</label> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (bel12 * ver12) -->
<input id="oplaty12" type="text" maxlength="255" value=""/> </li> <li class="section_break"> <label class="description" for="total">RAZEM
</label> <!-- To chciałem zmienić, aby nie wyświetlało się okienko, ale wynik (spalanie12+oplaty12) -->
<input id="total" type="text" maxlength="255" value=""/> <!-- 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' -->
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);
var razem
= eval(value10
+ value11
); $('#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.