Раздельное суммирование значений чекбоксов
Здравствуйте.
Есть такой код: <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:00. |