Показать сообщение отдельно
  #1 (permalink)  
Старый 26.06.2012, 09:55
Интересующийся
Отправить личное сообщение для georg Посмотреть профиль Найти все сообщения от georg
 
Регистрация: 08.05.2012
Сообщений: 11

пересчет суммы в заказе в зависимости от выбраных чекбоксов
Добрый день, форумчане, интересует такой вопрос: мне нужно автоматически пересчитывать товары в заказе в зависимости от введенного значения количества и нажатого чекбокса.

У меня пока сделан только подсчет в зависимости от измененного количества, вот скрипт(источник):
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);
			
        }

но так не считает общую сумму. Помогите, пожалуйста!

Последний раз редактировалось georg, 26.06.2012 в 11:08.
Ответить с цитированием