1

簡単な数学練習用の js スクリプトを作成したいと思います。

例: 合計が与えられ (=10)、0 から 10 までの数字で 4 つの選択があります。数字を選択した場合、間違ったオプションを無効にする必要があります。つまり、選択したオプションの合計が 10 を超えることはできません。

私はこの方法を試しました:ここをクリック

$(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);
            });
        });
    }
});

しかし、それは完璧とはほど遠いものです...

4

1 に答える 1

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

デモ:フィドル

于 2013-11-15T07:27:18.583 に答える