从多个复选框中获取值

时间:2014-02-06 20:02:39

标签: jquery ajax checkbox

我有这个复选框

<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])将被发送。

3 个答案:

答案 0 :(得分:2)

另一种香草解决方案:

var res = [ ].reduce.call( document.querySelectorAll( 'input.calc:checked' ), function( a, b ) {
    return a + (+b.value || 0);
}, 0);

演示:http://jsfiddle.net/fsbTS/

答案 1 :(得分:0)

你可以简单地循环它

var added= 0;
$(".calc:checkbox:checked").each(function () {
    added += +$(this).val();
});

DEMO

答案 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
}