Раздельное суммирование значений чекбоксов
Здравствуйте.
Есть такой код: <form name="Sum"> <input type="checkbox" value="1"/> <input type="checkbox" value="2"/> <input type="checkbox"/> <input type="checkbox" value=""/> <input type="checkbox" value="3"/> <input type="checkbox" value="4"/> <input type="checkbox" value="5"/> <output id="rezultat">Сумма: 0</output> </form>
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;
}
Данный скрипт суммирует значения чекбоксов без учета id или классов. Подскажите, пожалуйста, как получить разные суммы значений, например <form name="Sum"> <input type="checkbox" class="class1" value="1"/> <input type="checkbox" class="class1" value="2"/> <input type="checkbox" class="class1" value="3"/> <input type="checkbox" class="class1" value="4"/> <input type="checkbox" class="class1" value="5"/> <input type="checkbox" class="class2" value="6"/> <input type="checkbox" class="class2" value="7"/> <input type="checkbox" class="class2" value="8"/> <input type="checkbox" class="class2" value="9"/> <input type="checkbox" class="class2" value="10"/> <output id="rezultat1">Сумма: 0</output> <output id="rezultat2">Сумма: 0</output> </form> Причем отмечать нужно не все чекбоксы, а лишь определенного класса, но эти две суммы менялись и выводились бы одновременно. Спасибо. |
Цитата:
|
<output id="rezultat1">Сумма: 0</output> <output id="rezultat2">Сумма: 0</output> |
Цитата:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function (){
$(':checkbox').click(function(){
var typ=this.className;
var summ=0;
$('.'+typ+':checked').each(function(){
summ+=parseInt(this.value);
});
$('span.'+typ).text(summ);
});
});
</script>
</head>
<body>
<form name="Sum">
<div>
<input type="checkbox" class="class1" value="1"/>
<input type="checkbox" class="class1" value="2"/>
<input type="checkbox" class="class1" value="3"/>
<input type="checkbox" class="class1" value="4"/>
<input type="checkbox" class="class1" value="5"/>
</div>
<div>
<input type="checkbox" class="class2" value="6"/>
<input type="checkbox" class="class2" value="7"/>
<input type="checkbox" class="class2" value="8"/>
<input type="checkbox" class="class2" value="9"/>
<input type="checkbox" class="class2" value="10"/>
</div>
<div>
<output id="rezultat1">Сумма: <span class=' class1'>0</span></output>
<output id="rezultat2">Сумма: <span class=' class2'>0</span></output>
</div>
</form>
</body>
</html>
|
Большое спасибо за ответ. Но нужно, чтобы отмечались чекбоксы class1, а сумма значений чекбоксов class2 выводилась автоматически. Собственно говоря, поля чекбоксов class2 должны быть скрытыми.
|
solanos, тогда зачем вообще те "скрытые" чекбоксы? :) Кто их будет чекать, если их не видно?
|
Тогда как сделать, чтобы при отметки чекбокса, менялись сразу 2 суммы. Выходит, этот скрипт не подходит. Ksa, Вы очень помогли. Еще раз спасибо.
|
Цитата:
|
Да, выходит без HTML5 никак.
|
Цитата:
Атрибуты у тегов существуют очень давно... |
| Часовой пояс GMT +3, время: 23:27. |