2013-11-15 8 views
1

Я хотел бы создать простую математику, использующую скрипт 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); 
      }); 
     }); 
    } 
}); 

Но это далеко от меняться идеальный ...

+0

Вы можете получить значение элемента выбора используя '$ (" select "). val()', вам не нужно искать дочернюю 'option: selected' вручную. –

ответ

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

+0

Абсолютно совершенный !!!! Я только что закончил свой завтрак и ничего себе. Спасибо за ваш быстрый ответ. – user527584

Смежные вопросы