Javascript 合计分数并添加到评分结果

Javascript 合计分数并添加到评分结果,javascript,jquery,Javascript,Jquery,我有一个评分表,允许对个人进行评分,然后将其放入一个分级组,但我很难弄清楚如何使用jQuery或JavaScript实现这一点 例如,我表单的第一部分有这样一个结构,其中每个组的总数应该写入CombinedScore字段 第二部分应检查综合得分的值,并将其放入适当的组中。比如说 <input id="FoodDrinkGroup1" name="FoodDrinkGroup" type="radio" value="1-10" /> <input id="FoodDrinkGr

我有一个评分表,允许对个人进行评分,然后将其放入一个分级组,但我很难弄清楚如何使用jQuery或JavaScript实现这一点

例如,我表单的第一部分有这样一个结构,其中每个组的总数应该写入CombinedScore字段

第二部分应检查综合得分的值,并将其放入适当的组中。比如说

<input id="FoodDrinkGroup1" name="FoodDrinkGroup" type="radio" value="1-10" />
<input id="FoodDrinkGroup2" name="FoodDrinkGroup" type="radio" value="11-20" />
<input id="FoodDrinkGroup3" name="FoodDrinkGroup" type="radio" value="21-30" />
因此,如果有人在食物方面得分10分,在饮料方面得分15分,那么他们应该被加入21-30分的食物组


我总共有三个这样的组,但我希望如果我能让它为一个组工作,我应该能够将相同的代码应用到其余的组。

为不同的项目组使用类会使选择器更简洁,但即使使用此标记,您也可以这样做

$(function() {
    // Part 1
    var sum = parseInt($('input[name="Food"]:checked').attr('value'));
    sum += parseInt($('input[name="Drink"]:checked').attr('value'));
    $('input[name="CombinedScore"]').val(sum);

    //Part 2
    $('input[name="FoodDrinkGroup"]').each(function(i, elem) {
        var range = $(elem).attr('value').split('-');
        if (sum >= range[0] && sum <= range[1]) {
            $(elem).attr('checked', true);
        }
    });
});

请看下面的功能,似乎正在工作。请参见此处的现场工作示例-


有点晚了,但我想我会展示我制作的代码。这只是使用了一点数学知识来确定它应该选择哪个组和哪个元素索引

var total = 0;

$('input[name=Food]:checked, input[name=Drink]:checked')
 .each(function() {
    total += parseInt(this.value);
});

var index = parseInt(total / 11);

$('[name=CombinedScore]').val(total);

$('input[name=FoodDrinkGroup]').eq(index).prop('checked', true);

工作现场小提琴:

我认为在求和之前应该先解析INTVALUE。另外,您可以使用.val而不是.attr'value'a,因为您的小提琴缺少javascript部分;b主html代码中未定义“组合”;c在最后一个if之前,您缺少其他if,因此最后一个组将始终被选中。啊,不确定,代码去哪里了,它消失了。无论如何,谢谢你指出其他的。谢谢你的例子。我尝试了这个方法,是的,它在这个例子中确实有效,但是如果范围从5、10、15增加到1到12,它无法准确地对分数进行排序。这不是原始问题的一部分,因此在这种情况下,您的解决方案运行良好。如果它们增加5,则更改var index=parseInttotal/6;-显然,这项技术依赖于它们是你射程的数学模式,所以mkilmanas技术虽然更长,但用途更广。
function proc() {

    food = $('input[name=Food]:checked').val();
    drink = $('input[name=Drink]:checked').val();

    combined = parseInt(food) + parseInt(drink);

    $("#combined").val(combined);

    if (combined < 11) {
        $('#FoodDrinkGroup1').attr('checked', 'checked');
    } else if (combined < 21) {
        $('#FoodDrinkGroup2').attr('checked', 'checked');
    } else if (combined < 31) {
        $('#FoodDrinkGroup3').attr('checked', 'checked');
    }

}
var total = 0;

$('input[name=Food]:checked, input[name=Drink]:checked')
 .each(function() {
    total += parseInt(this.value);
});

var index = parseInt(total / 11);

$('[name=CombinedScore]').val(total);

$('input[name=FoodDrinkGroup]').eq(index).prop('checked', true);