Starałem się napisać samemu funkcję która obliczy cenę brutto z podanej ceny netto, vatu i ilości sztuk:
function obliczznetto(e) {
//pobranie po id ilosci sztuk
var ilosc = document.getElementById('ilosc'+e).value;
//sprawdzenie czy ilosc to liczba oraz musi byc minimum ustawiona na 1
if (isNaN(ilosc) || (ilosc == 0)) {document.getElementById('ilosc'+e).value = '1'}
//pobranie po id pola netto
var netto = document.getElementById('netto'+e).value;
//pobranie po id pola vat
var vat = document.getElementById('vat'+e).value;
//zamiana przecinka na kropkę
var cena = netto.replace(',', '.')
//w razie problemów (nie jest liczbą lub mniejsze od 0) skasowanie zawartości i ustawienie kursora w odpowiednim polu
if (isNaN(cena) || (cena < 0)) {
document.getElementById('netto'+e).value = ''
alert('wpisz cenę netto')
document.getElementById('netto'+e).focus()
}
else {
cena=cena * ilosc + vat;
document.getElementById('brutto'+e).value = cena;
}
/*alert(cena*ilosc)*/
}
<form name="form" id="form" action="" method="post"> Ilosc tego szajsu:
<input type="text" id="ilosc1" name="ilosc1" onkeyup="obliczznetto('1')" value="1"/><br />
Cena netto:
<input type="text" id="netto1" name="netto1" onkeyup="obliczznetto('1')" value=""/><br />
Kwota vat:
<input type="text" id="kwotavat1" name="kwotavat1" value="" /><br />
Cena brutto:
<input type="text" id="brutto1" name="brutto1" value="" readonly="readonly" />
Jednak nie wiem, jak uzyskać cenę brutto z groszami, dwa miejsca po przecinku... na forum znalazłem taki kod:
cena = new String(Math.round(cena * 100 * (1 + vat)))
var dlugosc = cena.length
switch (dlugosc) {
case 1:
cena = '0,0' + cena
break
case 2:
cena = '0,' + cena
break
default:
cena = cena.substring(0, dlugosc - 2) + ',' + cena.substring(dlugosc - 2)
}
Jednak po jego zastosowaniu cena jest nieprawidłowa.