Увеличение результата при выборе чекбокса
Добрый день! Недавно мне на форуме уважаемый ksa очень помог, и вот набравшись, нагл... смелости решил спросить еще.
Есть такая задача, необходимо получать сумму значений активированных чекбоксов и она решена, а вот при выборе одного из них необходимо что бы вся получившаяся сумма увеличивалась на 20% Назначил класс dvadtsatiprocentov, но как его прикрутить что бы только при активации этого чекбокса срабатывало Увеличение результата при выборе чекбокса на 20% не пойму никак. Подскажите пожалуйста, что я делаю не так. Сейчас просто считает плюс 20%, а не по выбору чекбокса с классом dvadtsatiprocentov. Заранее благодарен всем откликнувшимся. <div id="price"> <ul> <li><input type="checkbox" name="regcalc" value="4000" />Нет</li> <li><input type="checkbox" name="regcalc" value="0" />Да</li> <li><input type="checkbox" name="regcalc" value="10000" />Общая система</li> <li><input type="checkbox" name="regcalc" value="5000" />Усно 6%</li> <li><input type="checkbox" name="regcalc" value="8000" />Усно 15%</li> <li><input type="checkbox" name="regcalc" value="1000" />1-10</li> <li><input type="checkbox" name="regcalc" value="3000" />11-30</li> <li><input type="checkbox" name="regcalc" value="9000" />31-50</li> <li><input type="checkbox" name="regcalc" value="15000" />51-70</li> <li><input type="checkbox" name="regcalc" value="18000" />71-90</li> <li><input type="checkbox" name="regcalc" value="22000" />91-110</li> <li><input type="checkbox" name="regcalc" value="25000" />111-130</li> <li><input type="checkbox" name="regcalc" value="28000"/>1-5</li> <li><input type="checkbox" name="regcalc" value="28000"/>6-10</li> <li><input type="checkbox" name="regcalc" value="28000"/>11-15</li> <li><input type="checkbox" name="regcalc" value="28000"/>16-20</li> <li><input type="checkbox" name="regcalc" value="28000"/>21-25</li> <li><input type="checkbox" name="regcalc" value="0"/>нет</li> <li><input class="dvadtsatiprocentov" type="checkbox" name="regcalc" value="0" />Да</li> </ul> <div class="result" id="sum">0</div> </div> <script src='https://code.jquery.com/jquery-latest.js'></script> <script language="JavaScript" type="text/javascript"> $(function() { $("#price").click(function() { var sum = 0; $('#price :checked').each(function() { sum += parseInt($(this).val()); }); var pro = 0; $('#price :checked').each(function() { pro += parseInt($(this).val())/5; }); $('#sum').text(sum+pro); }); }); </script> |
Евгенион,
а может ли быть одновременный выбор и "да", и "нет"? |
$(function() { $("#price").on("click", function() { var sum = 0; var pro = 0; $("#price :checked").each(function() { sum += parseInt($(this).val()); }); if ($("#price .dvadtsatiprocentov").prop("checked")) { pro = sum / 5; // или sum * 0.2 } $("#sum").text(sum + pro); }); }); |
Спасибо за помощь, все отлично работает!)
|
Евгенион,
А как оно может отлично работать? Как правильно заметил laimas, Цитата:
|
вариант на js :dance:
<div id="price"> <ul> <li><input type="checkbox" name="regcalc" value="4000" />Нет</li> <li><input type="checkbox" name="regcalc" value="0" />Да</li> <li><input type="checkbox" name="regcalc" value="10000" />Общая система</li> <li><input type="checkbox" name="regcalc" value="5000" />Усно 6%</li> <li><input type="checkbox" name="regcalc" value="8000" />Усно 15%</li> <li><input type="checkbox" name="regcalc" value="1000" />1-10</li> <li><input type="checkbox" name="regcalc" value="3000" />11-30</li> <li><input type="checkbox" name="regcalc" value="9000" />31-50</li> <li><input type="checkbox" name="regcalc" value="15000" />51-70</li> <li><input type="checkbox" name="regcalc" value="18000" />71-90</li> <li><input type="checkbox" name="regcalc" value="22000" />91-110</li> <li><input type="checkbox" name="regcalc" value="25000" />111-130</li> <li><input type="checkbox" name="regcalc" value="28000"/>1-5</li> <li><input type="checkbox" name="regcalc" value="28000"/>6-10</li> <li><input type="checkbox" name="regcalc" value="28000"/>11-15</li> <li><input type="checkbox" name="regcalc" value="28000"/>16-20</li> <li><input type="checkbox" name="regcalc" value="28000"/>21-25</li> <li><input type="checkbox" name="regcalc" value="0"/>нет</li> <li><input class="dvadtsatiprocentov" type="checkbox" name="regcalc" value="0" />Да</li> </ul> <div class="result" id="sum">0</div> </div> <script> price.onclick = function(e) { var cur = e ? e.target : window.event.srcElement; if ( "INPUT" === cur.tagName) { var res = [].reduce.call(this.querySelectorAll('input:checked'), function(a, b) { return a + parseInt(b.value) }, 0); this.querySelector('.dvadtsatiprocentov:checked') && (res *= 1.2); sum.innerHTML = res; } }; </script> |
Цитата:
Цитата:
|
ruslan_mart,
у меня нет под руками ИЕ9 что там есть e.target? |
Poznakomlus, вероятно ruslan_mart имел ввиду, что в случае с e.target вы "позаботились" о IE, а на метод "reduce" внимания не обратили.
Метод "reduce" поддерживается только с 9-й версии IE. https://developer.mozilla.org/en-US/..._compatibility IE с 9-й версии должен поддерживать и event.target. https://developer.mozilla.org/ru/doc...мечания |
ok, уменьшим код на одну строку :) совместимость от ie9
<div id="price"> <ul> <li><input type="checkbox" name="regcalc" value="4000" />Нет</li> <li><input type="checkbox" name="regcalc" value="0" />Да</li> <li><input type="checkbox" name="regcalc" value="10000" />Общая система</li> <li><input type="checkbox" name="regcalc" value="5000" />Усно 6%</li> <li><input type="checkbox" name="regcalc" value="8000" />Усно 15%</li> <li><input type="checkbox" name="regcalc" value="1000" />1-10</li> <li><input type="checkbox" name="regcalc" value="3000" />11-30</li> <li><input type="checkbox" name="regcalc" value="9000" />31-50</li> <li><input type="checkbox" name="regcalc" value="15000" />51-70</li> <li><input type="checkbox" name="regcalc" value="18000" />71-90</li> <li><input type="checkbox" name="regcalc" value="22000" />91-110</li> <li><input type="checkbox" name="regcalc" value="25000" />111-130</li> <li><input type="checkbox" name="regcalc" value="28000"/>1-5</li> <li><input type="checkbox" name="regcalc" value="28000"/>6-10</li> <li><input type="checkbox" name="regcalc" value="28000"/>11-15</li> <li><input type="checkbox" name="regcalc" value="28000"/>16-20</li> <li><input type="checkbox" name="regcalc" value="28000"/>21-25</li> <li><input type="checkbox" name="regcalc" value="0"/>нет</li> <li><input class="dvadtsatiprocentov" type="checkbox" name="regcalc" value="0" />Да</li> </ul> <div class="result" id="sum">0</div> </div> <script> price.onclick = function(e) { if ( "INPUT" === e.target.tagName) { var res = [].reduce.call(this.querySelectorAll('input:checked'), function(a, b) { return a + parseInt(b.value) }, 0); this.querySelector('.dvadtsatiprocentov:checked') && (res *= 1.2); sum.innerHTML = res; } }; </script> |
Часовой пояс GMT +3, время: 03:43. |