2015-12-06 4 views
1

У меня есть меню множественного выбора, как так:Вычислить множественный выбор выпадающего

<select style="width:345px;" multiple="multiple" id="syndicate_group"> 
    <option data-cost="10" value="groupNo114">Starter</option> 
    <option data-cost="15" value="groupNo100">Bronze</option> 
    <option data-cost="25" value="groupNo104">Silver</option> 
    <option data-cost="34" value="groupNo108">Gold</option> 
    <option data-cost="0" value="groupNo115">Other</option> 
</select> 

<input type="number" placeholder="" value="" name="ammountToPay" id="ammountToPayField"> 

Я хочу сделать расчет на основе данных цены и не значение выбора пользователя, поэтому, если пользователь выбирает как стартер, так и бронза, значение в id «ammountToPayField» будет 25, но тогда, если они решат, что они хотят только бронзы, значение в «ammountToPayField» будет только 15, но в течение некоторого времени я мог только найдите поля ввода, а не поле множественного выбора.

+0

Вы, вероятно, хотите, чтобы посмотреть в флажки как к соединять ниспадающий выберите если вы хотите выбрать несколько вариантов. – CalebB

+0

Извините, ребята, мне просто пришлось изменить его из расчета на основе значения, соответствующего атрибуту стоимости данных. – user1338176

ответ

2

Попробуйте это:

$('#syndicate_group').change(function() { 
    var sum = $(this).find(':checked') 
        .map(function() { return parseInt($(this).data('cost'), 10); }) 
        .get() 
        .reduce(function(x, y) { return x + y; }); 

    $('#ammountToPayField').val(sum); 
}); 

См Fiddle

+0

спасибо, это работает отлично, но жаль, что я узнал, что мне нужно рассчитать, используя стоимость данных, а не стоимость, можете ли вы скомпенсировать, потому что parseInt (this.data ('cost'), 10); }) не работает вместо вашего parseInt (this.value, 10); }) – user1338176

+0

@ user1338176, я обновил ответ – haim770

0

Попробуйте это:

$("#syndicate_group").change(function() { 
var sum = 0; 
$("select option:selected").each(function() { 
    sum += parseInt($(this).text()); 
}); 
$("#ammountToPayField").text(sum); }).change(); 
Смежные вопросы