我有这个复选框
<input type="checkbox" class="calc" name="access[a]" value="1" />
<input type="checkbox" class="calc" name="access[b]" value="2" />
<input type="checkbox" class="calc" name="access[c]" value="3" />
<input type="checkbox" class="calc" name="access[d]" value="4" />
我需要以下内容,我将在一个例子中解释它: 假设我选择了第一个和第二个复选框,然后选择“ab”([access [a] + access [b])和“3”(1 + 2)将被发送。
EDIT1: 你没有忘记我。我想发送 2 的东西,计算价值和访问[值]。
实施例: 用户选择第三和第四个字段,7(3 + 4)和cd([access [c] + access [d])将被发送。
答案 0 :(得分:2)
另一种香草解决方案:
var res = [ ].reduce.call( document.querySelectorAll( 'input.calc:checked' ), function( a, b ) {
return a + (+b.value || 0);
}, 0);
答案 1 :(得分:0)
你可以简单地循环它
var added= 0;
$(".calc:checkbox:checked").each(function () {
added += +$(this).val();
});
答案 2 :(得分:0)
强制性的香草回答:
按类别抓取数组中的元素(您也可以使用querySelectorAll(".calc")
(或[name*='access']
等)
循环元素数组,检查checked属性,并添加到总和(确保将值解析为Int以避免NaN
问题)
var sum = 0;
var x = document.getElementsByClassName("calc");
for (var i=0; i<x.length; i++) {
if (x[i].checked) sum+= parseInt(x[i].value,10); //parse as int
}