1

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

<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>');
});

选中的单选按钮的第一个值之和的结果是确定的。如果您还更改了某些选择,则更新了一些。

我不能正确地计算第二个值的总和并以相同的方式输出它们。我已经尝试了一天没有运气。

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

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

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

任何帮助高度赞赏。


最后我发现了问题所在……很难阻止我用头撞墙。

最后一组 2 个 rafio 按钮,我忘记分配它们的第二个值。所以现在一切正常。

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

4

2 回答 2

1

在 jsfiddle 上查看此解决方案。

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

听起来您想要的是复选框,并且每次他们选中复选框时都会更新总数?这可以通过添加一个

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

到复选框字段。

于 2012-05-13T12:19:45.053 回答
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/

于 2012-05-13T12:13:57.310 回答