Piszę skrypt formularza, który na końcu ma być zliczany (kwota do zapłaty), ale napotkałem 2 problemy:
1. Kiedy wpiszę literę zamiast liczby suma się wywala - zamienia się na NaN
2. Kiedy wpiszę do formularza wartość po raz drugi (inną) to znowu ją dolicza zamiast zamienić.
Oto skrypt:
Kod
$(function($)
{
var divs = ['#smoczek', '#butelka_smoczek'];
var suma = 0;
$('input').keyup(function()
{
var value = $(this).val();
var id = $(this).attr('id');
var cena = $('div' + divs[id-1] + ' div.item_price strong').text().replace(',', '\.');
var koszt = parseFloat(cena) * parseFloat(value);
suma = parseFloat(suma) + parseFloat(koszt.toFixed(2));
$('div#suma').text(suma.toFixed(2));
}).keyup();
});
{
var divs = ['#smoczek', '#butelka_smoczek'];
var suma = 0;
$('input').keyup(function()
{
var value = $(this).val();
var id = $(this).attr('id');
var cena = $('div' + divs[id-1] + ' div.item_price strong').text().replace(',', '\.');
var koszt = parseFloat(cena) * parseFloat(value);
suma = parseFloat(suma) + parseFloat(koszt.toFixed(2));
$('div#suma').text(suma.toFixed(2));
}).keyup();
});
A tu kawałek kodu HTML odpowiedzialny za inputa i cenę:
Kod
<div class="cell price">
<label for="1">ilość sztuk:</label>
<input type="text" name="szt1" id="1" maxlength="3" value="0" onkeyup="this.value=this.value.replace(/\D/g,'')" onBlur="if(this.value=='') this.value='0';" onFocus="if(this.value=='0') this.value='';"/>
<div class="item_price">
<strong>49,<small>40</small></strong> <span>/ szt.</span>
</div>
</div>
<label for="1">ilość sztuk:</label>
<input type="text" name="szt1" id="1" maxlength="3" value="0" onkeyup="this.value=this.value.replace(/\D/g,'')" onBlur="if(this.value=='') this.value='0';" onFocus="if(this.value=='0') this.value='';"/>
<div class="item_price">
<strong>49,<small>40</small></strong> <span>/ szt.</span>
</div>
</div>
Ogólna struktura DIVów wygląda mniej więcej tak:
Kod
div.table -> div.img | div.desc | div.price <- /div.table
Proszę o pomoc, wskazówki, rady
