Упростить код функции для select
Решаю задачу - суммирование цены в зависимости от выбранных select.
Как упростить код - чтоб не подключаться к каждому select по ID? Зашел в тупик и написал такое .. $(function(){ var StandartValSel = 0; var optionVal = 0; $('select').on('change', function (e) { optionVal += parseInt( $(e.target).find("option:selected").val() ); $('#price').text(optionVal); }) }) Пример HTML <div id="price">0</div> <select class="form-control " id="id1"> <option value="0">Select:</option> <option value="110">110 Euro</option> <option value="120">120 Euro</option> <option value="130">130 Euro</option> </select> <select class="form-control " id="id2"> <option value="0">Select:</option> <option value="10">10 Euro</option> <option value="20">20 Euro</option> <option value="30">30 Euro</option> </select> <select class="form-control " id="id3"> <option value="0">Select:</option> <option value="210">210 Euro</option> <option value="220">220 Euro</option> <option value="230">230 Euro</option> </select> |
$(function(){ var optionVal = 0; $('select').on('change', function (e) { optionVal += +$(e.target).val(); $('#price').text(optionVal); }); }); |
Цитата:
optionVal += +$(e.target).val();у нас все время додается значения, а как заставить обновлять значение из селекта .. и получать суму из трех селектов https://jsfiddle.net/core18/6bm3xvce/ |
<!DOCTYPE html> <html> <head> <script data-require="jquery@3.0.0" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script> <link rel="stylesheet" href="style.css" /> <script> $(function(){ var optionVal = 0; $('select').on('change', function (e) { optionVal = $('select').map(function(i, el) { return $(el).val(); }).get().reduce(function(p,c,i,a) { return +p + +c; }); $('#price').text(optionVal); }); }); </script> </head> <body> <div id="price">0</div> <select class="form-control " id="id1"> <option value="0">Select:</option> <option value="110">110 Euro</option> <option value="120">120 Euro</option> <option value="130">130 Euro</option> </select> <select class="form-control " id="id2"> <option value="0">Select:</option> <option value="10">10 Euro</option> <option value="20">20 Euro</option> <option value="30">30 Euro</option> </select> <select class="form-control " id="id3"> <option value="0">Select:</option> <option value="210">210 Euro</option> <option value="220">220 Euro</option> <option value="230">230 Euro</option> </select> </body> </html> |
сумма нескольких select
Rasy,
минимизировал :) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script data-require="jquery@3.0.0" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script> <link rel="stylesheet" href="style.css" /> <script> $(function(){ var $sel = $('select'), sum; $sel.on('change', function (e) { sum = [].reduce.call($sel,function(a, b) { return a + +b.value; },0); $('#price').text(sum); }); }); </script> </head> <body> <div id="price">0</div> <select class="form-control " id="id1"> <option value="0">Select:</option> <option value="110">110 Euro</option> <option value="120">120 Euro</option> <option value="130">130 Euro</option> </select> <select class="form-control " id="id2"> <option value="0">Select:</option> <option value="10">10 Euro</option> <option value="20">20 Euro</option> <option value="30">30 Euro</option> </select> <select class="form-control " id="id3"> <option value="0">Select:</option> <option value="210">210 Euro</option> <option value="220">220 Euro</option> <option value="230">230 Euro</option> </select> </body> </html> |
core,
$(function(){ var value, $price = $('#price'), $select = $('select').on({ 'change': function(e) { value = 0, $select.trigger('adding'), $price.text(value) }, 'adding': function(e) { value += +this.value } }); }); |
Спасибо большое. Буде разбираться и изучать...
от меня + в карму |
Цитата:
|
Rise,
:thanks: |
Часовой пояс GMT +3, время: 13:05. |