У меня есть три набора флажков (serviceA, B & C) с 5 флажками, каждый из которых имеет одно и то же имя класса.Получить выделенные флажки и добавить к общей сложности
Мне нужно подсчитать отмеченные флажки каждого набора, умножить их на a, b, c (другое значение для каждой службы A, B, C) и отобразить сумму всех выборов в текстовом поле, div или что угодно.
До сих пор я получаю желаемый результат, и все работает нормально, но мне бы хотелось, чтобы эксперты jquery сказали мне, есть ли лучший способ или, возможно, более короткий или даже более аккуратный способ написать код.
Вот мой код, а также на jsfiddle:
HTML:
<html>
<body>
serviceA1 <input type="checkbox" name="serviceA1" id="serviceA1" value="1" class="serviceA" /><br />
serviceA2 <input type="checkbox" name="serviceA2" id="serviceA2" value="1" class="serviceA" /><br />
serviceA3 <input type="checkbox" name="serviceA3" id="serviceA3" value="1" class="serviceA" /><br />
serviceA4 <input type="checkbox" name="serviceA4" id="serviceA4" value="1" class="serviceA" /><br />
serviceB1 <input type="checkbox" name="serviceB1" id="serviceB1" value="1" class="serviceB" /><br />
serviceB2 <input type="checkbox" name="serviceB2" id="serviceB2" value="1" class="serviceB" /><br />
serviceB3 <input type="checkbox" name="serviceB3" id="serviceB3" value="1" class="serviceB" /><br />
serviceB4 <input type="checkbox" name="serviceB4" id="serviceB4" value="1" class="serviceB" /><br />
<p>Total<input type="text" name="TotlCost" id="TotalCost" size="10"/></p>
</body>
</html>
Javascript:
$(document).ready(function() {
$("input:checkbox").click(function(event) {
var total = 0;
var a = 5;
var b = 10;
var c = 8;
var totalA = 0;
var totalB = 0;
var totalC = 0;
$(".serviceA:checkbox:checked").each(function() {
totalA += parseInt($(this).val());
});
$(".serviceB:checkbox:checked").each(function() {
totalB += parseInt($(this).val());
});
$(".serviceC:checkbox:checked").each(function() {
totalC += parseInt($(this).val());
});
total = totalA*a + totalB*b + totalC*c;
if (total == 0) {
$('#TotalCost').val('0');
} else {
$('#TotalCost').val(total);
}
});
});
UPDATE: Кроме того, #TotalCost уже имеет значение от других выборов на странице , как я могу добавить количество меток в #TotalCost?
НОВЫЙ ДОПОЛНИТЕЛЬ: После применения принятого ответа на мой код у меня возникает еще один вопрос. Одним из элементов управления на моей форме является выбор:
<select id="symb" class="big" name="symb">
<option value="1#10#6">Basic Personal</option>
<option value="2#20#6">Basic Family</option>
<option value="10#90#12">Advanced Personal</option>
<option value="11#120#12">Advanced Family</option>
</select>
со средним числом в delimeted стоимости является стоимость каждого выбора. Как я могу добавить эту стоимость в поле #cost каждый раз, когда пользователь делает выбор?
Пятно на! Спасибо, мне очень понравилась простая мысль: «Если все флажки, где задан один и тот же класс, например, служба и параметр значения, были обновлены, чтобы значение было добавлено/вычитано» – bikey77
Пожалуйста, посмотрите мое последнее обновление, я добавлен новый вопрос в конце. Благодаря! – bikey77
@ bikey77 Думаю, вам, вероятно, следует задать вопрос в новом вопросе, вы можете связать это с Q & A. Вы превращаете это в разговор, который не должен работать StackOverflow. – mttrb