Показать сообщение отдельно
  #1 (permalink)  
Старый 22.05.2015, 16:11
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Сумма checkbox + type="text"
Добрый день.
Подскажите пожалуйста как мне посчитать сумму в <output> при выборе чекбоксов?
И еще как сделать проверку на включение type="checkbox", чтобы если включен, то в сложение сумм учитывать type="text" ?
<table border="1" width="100%" bgcolor="#FFFF00">
	<tr><form name="Sum">
		<td colspan="2" align="center"><b><font size="4">Итого за  оборудование = <output id="rezultat" name="rezultat">0</output> руб.</font></b></td>
	</tr>
	<tr>
		<td><label><input type="checkbox" name="vibor" value="15200">Прибор1 = 15200 руб.</label>
			<label><p><input type="checkbox" name="vibor" value="3500">Прибор2 = 3500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="1500">Прибор3 = 1500 руб.</p></label>
		</td>
		<td><label><input type="checkbox" name="vibor" value="15200">Прибор4 = 15200 руб.</label>
			<label><p><input type="checkbox" name="vibor" value="3500">Прибор5 = 3500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="1500">Прибор6 = 1500 руб.</p></label>
			<label><p><input type="checkbox" name="vibor" value="ON">Дополнительно:&nbsp; <input type="text" name="vibor2" size="20">руб.</p></label>
		</td></form>
	</tr>
</table>


Скрипт почему-то не работает...
<script>
var s = document.forms.Sum,
    d = s.querySelectorAll('input[type="checkbox"]:not([value]), input[type="checkbox"][value=""]');
  for (var i = 0; i < d.length; i++) // чтобы не было написано NaN, убираем в disabled пункты, где не прописаны значения
    d[i].disabled = true;
s.onchange = function() { // начало работы функции сложения
  var n = s.querySelectorAll('[type="checkbox"]'),
      itog = 0;
  for(var j=0; j<n.length; j++)
    n[j].checked ? itog += parseFloat(n[j].value) : itog;
    document.getElementById('rezultat').innerHTML = itog;
}
</script>
Ответить с цитированием