Увеличение результата при выборе чекбокса
Добрый день! Недавно мне на форуме уважаемый 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, время: 14:18. |