3セットのチェックボックス(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);
}
});
});
更新:また、#TotalCostには、ページ上の他の選択からの値がすでにあります。チェックボックスの合計を#TotalCostに追加するにはどうすればよいですか?
新しい追加:受け入れられた回答をコードに適用した後、別の質問があります。私のフォームのコントロールの1つは選択です:
<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フィールドに追加するにはどうすればよいですか?