使用JS计算一组按钮的每个单选按钮的两个值的总和

时间:2012-05-13 12:02:40

标签: javascript jquery

我有4组单选按钮,每组有4个按钮。每个按钮都设置了两个用|分隔的值即:

<input type="radio" id="t20" name="train2" value="0|0">
<input type="radio" id="t20" name="train2" value="5|0.19">
<input type="radio" id="t20" name="train2" value="10|0.19">
<input type="radio" id="t20" name="train2" value="15|0.19">

所有4组都遵循以上示例 - 第一个值的编号不同,按钮2,3和4的第二个值编号相同。从每个组中我只选中了一个按钮。

我有一个java脚本,必须对已检查按钮的值进行一些计算:

$(document).ready(function()
{   
var total = 0;
function calcTotal()
{
    $("input:checked").each(function()
    {
        var value = $(this).attr("value");
        var array = value.split('|')
        var firstValue = array[0];
        var secondValue = array[1];
        total += parseFloat(firstValue);
    });
}
calcTotal();
$("sum").before('<font class="total" style="font-family: Myriad Pro, Gill Sans, Gill Sans MT, Calibri, sans-serif; font-size: 18px; font-weight: bold;">' + total + '</font>');
});

选中的单选按钮的第一个值之和的结果是OK。更新了一些,如果你也改变了一些选择。

我不能正确做的是计算第二个值的总和并以相同的方式输出它们。我一直在努力争取一天没有运气。

注意我只需要选中已选中按钮的总和。但是我需要一个第一个值和另一个第二个和的总和

NOTE2 在每组中我只检查了1个按钮,这就是我需要$("input:checked").each(function()的原因所以它不是1组中4个按钮的总和。

NOTE3 完整代码http://jsfiddle.net/P3ZyH/10/

任何帮助都非常感谢。


最后我发现了什么是错的......我很难阻止我用头撞墙。

最后一组有两个rafio按钮,我忘了分配第二个值。所以现在一切正常。

如果有人有兴趣 - http://jsfiddle.net/milenmk/P3ZyH/17/

2 个答案:

答案 0 :(得分:1)

在jsfiddle上查看this solution

基本上,你在总变量上有一些范围问题,而你只是总结了第一个值。我将total更改为数组,并将其中的两个值相加。

你想要的是什么,是复选框,每次检查时都要更新总数?这可以通过添加

来实现
$('#checkboxes').on("change",calcTotal);

到复选框字段。

答案 1 :(得分:0)

每组具有相同名称的单选按钮仅返回所选单选按钮的值,如果要查找所有单选按钮的值,则不应选择:checked值。

$(":radio").each(function(){

})

http://jsfiddle.net/KRMjX/

如果您想对所选输入执行某些操作,可以使用change事件处理程序:

$("input:checked").change(function(){
    var value = $(this).attr("value");
    var array = value.split('|')
    var firstValue = array[0];
    var secondValue = array[1];
    total += parseFloat(firstValue);
})

如果您只想检查前2个输入的值,请尝试:

$(":radio").each(function(i, v){
    if (i < 2) {
    var value = $(this).attr("value");
    var array = value.split('|')
    var val = array[0];
    var secondValue = array[1];
    total = parseFloat(val);
    }
})

http://jsfiddle.net/KRMjX/1/