如何禁用选择中的错误选项取决于所选选项?

时间:2013-11-15 07:16:29

标签: javascript jquery

我想创建一个简单的数学练习js脚本。

例如: 总和给出(= 10)并且有四个选择,数字从0到10。 如果我选择一个数字,我应该禁用错误的选项。我的意思是,所选选项的总和不能大于10。

我试过这种方式:click here

$(document).on("change", "select.number", function(){
    var sum = 10;
    var number = $(this).children("option:selected").val();
    var sum_number = 0;

    $("select.number option:selected").each(function(){
        sum_number = parseInt($(this).val(),10) + parseInt(sum_number,10);
    });    

    $("select.number option").attr("disabled", false);

    if(sum_number>0){
        var act_person = act_max_person = 0;
        $("select.number").each(function(){
            $(this).children("option:not(:first)").each(function(){   // first is 0
                if(parseInt($(this).val(),10) + parseInt(sum_number,10) > sum) $(this).attr("disabled", true);
            });
        });
    }
});

但它远非完美......

1 个答案:

答案 0 :(得分:0)

尝试

$(document).on("change", "select.number", function () {
    var sum = 10;
    var number = $(this).children("option:selected").val();

    var sum_number = 0;
    $("select.number option:selected").each(function () {
        sum_number += parseInt($(this).val(), 10);
    });

    $('select.number option').prop('disabled', false);
    if (sum_number > 0) {
        var diff = sum - sum_number;
        $('select.number').each(function () {
            var idx = parseInt($(this).val(), 10) + diff + 1;
            $(this).find('option').slice(idx).prop('disabled', true)
        })
    }
});

演示:Fiddle