Добрый день, форумчане, интересует такой вопрос: мне нужно автоматически пересчитывать товары в заказе в зависимости от введенного значения количества и нажатого чекбокса.
У меня пока сделан только подсчет в зависимости от измененного количества, вот скрипт(
источник):
function calculate(quantity, price, updItemId){
var anum = /(^\d+$)|(^\d+\.\d+$)/;
if (!anum.test(quantity)) {
alert('Введенное значение не является числом!');
return;
}
// сумма = количество * цену
goodSum = quantity * price;
document.getElementById(updItemId).innerHTML = goodSum;
var meForm = document.getElementById('me_order_form');
var bdoArray = meForm.getElementsByTagName('bdo');
// устанавливаем начальное нулевое значение ОБЩЕЙ суммы
var allSumm = 0;
// и в цикле прибавляем к ней сумму каждого товара
for (j = 0; j < bdoArray.length; j++) {
allSumm = allSumm + parseFloat(bdoArray[j].innerHTML);
}
document.getElementById('total_sum').innerHTML = allSumm;
}
а это разметка формы
<form id='me_order_form'>
<table class="variants">
<tr>
<th class="col1"><input type="checkbox"></th>
<th class="col2">Размеры и комплекты</th>
<th class="col3">Количество</th>
<th class="col4">Стоимость, руб.</th>
</tr>
<tr>
<td class="col1"><input type="checkbox" id="r1" onchange="sums()"></td>
<td class="col2">товар 1</td>
<td class="col3"><div class="count"><input type='text' value='0' id='inp_1' onBlur='calculate(this.value, "5000", "bdo_1")'></div></td>
<td class="col4"><bdo dir='ltr' id='bdo_1'>5000</bdo></td>
</tr>
<tr>
<td class="col1"><input type="checkbox" id="r2" onchange="sums()"></td>
<td class="col2">товар 2</td>
<td class="col3"><div class="count"><input type='text' value='0' id='inp_2' onBlur='calculate(this.value, "7000", "bdo_2")'></div></td>
<td class="col4"><bdo dir='ltr' id='bdo_2'>7000</bdo></td>
</tr>
<tr>
<td class="col1"><input type="checkbox" id="r3" onchange="sums()"></td>
<td class="col2">товар 3</td>
<td class="col3"><div class="count"><input type='text' value='0' id='inp_3' onBlur='calculate(this.value, "300", "bdo_3")'></div></td>
<td class="col4"><bdo dir='ltr' id='bdo_3'>300</bdo></td>
</tr>
<tr class="bottom">
<td colspan="2" class="total">Общая сумма заказа: <span class="price" id='total_sum'>0</span> <span class="price">Р</span></td>
<td colspan="2" class="order"><a href="#"></a></td>
</tr>
</table>
</form>
вопрос: как правильно написать, чтобы пересчет был только для строк, у которых активен чекбокс? Я писал в цикле , где сумма подсчитывается
for (j = 0; j < bdoArray.length; j++) {
var elem=document.getElementById("r"+i);
if(elem.checked)
allSumm = allSumm + parseFloat(bdoArray[j].innerHTML);
}
но так не считает общую сумму. Помогите, пожалуйста!