Упростить код функции для 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, время: 02:13. |