Отслеживание событий на select, js
Первый селект, у него есть data-priceid="1", таким методом я вписываю 1,2,3 и так далее, подставляю из див блока цены нужные для нужного варианта в селекте.
<div id="prices" style="display:none">
<div id="catAprice">1000</div>
<div id="catBprice">1100</div>
<div id="catDprice">1200</div>
<div id="catEprice">1300</div>
<div id="catCprice">1400</div>
</div>
Тут все работает, подставляю и вывожу полученную цену с селекта 1 в див блок.
Селект 2, только у одного выбранного варианта есть цена data-price="50", ее я вывожу в див блок. Тож все окей.
Две эти суммы я пытаюсь прибавить к друг другу и вывести в конечный результат, но что-то у меня не получилось. Желаемое поведение: выводить с селекта 1 полученную сумму в результат id sum при его изменении, и при изменении select2 прибавить число к данным из select1 и вывести туда же в id sum.
//для выбранной категории подставляем цену из id блоков. и далее выводим в диве
$('#cel1').change(function() {
var $selected = $(this).find(":selected");
$('#resultPrice').html($("#prices div").eq(+$selected.data("priceid") - 1).text());
})
//при выборе варианта во втором селекте, где есть цена data-price, выводим цену в див
$('#cel2').change(function() {
var $selected = $(this).find(":selected");
$('#resultPriceTaxi').html($selected.data("price"));
})
//берем обе полученные суммы из див и плюсуем, и выводим в диве
const resultPrice = $("#resultPrice").html().replace();
const resultPriceTaxi = $("#resultPriceTaxi").html().replace();
let rezult = (Number(resultPrice) + Number(resultPriceTaxi)).toString().replace(); //плюсуем две суммы
$('#sum').html(rezult);
.block{
width: 200px;
}
#resultPrice{
font-size: 18px;
color: #B848FF;
}
#resultPriceTaxi{
font-size: 18px;
color: #7AB900;
}
#sum{
font-size: 22px;
color: #FF2525;
}
<script src="https://bazaub.ru/media/admin/js/2.2.4jquery.min.js"></script>
<link rel="stylesheet" href="https://bazaub.ru/media/celect2/select2.min.css" />
<script src="https://bazaub.ru/media/celect2/select2.min.js"></script>
<script src="https://bazaub.ru/media/celect2/ru.js"></script>
<div class="block">
<select name="cel1" class="js-select2" id="cel1">
<option value="0">Выберите</option>
<option value="Категория (А)" data-priceid="1">Категория (А)</option>
<option value="Категория (B)" data-priceid="2">Категория (B)</option>
<option value="Категория (D)" data-priceid="3">Категория (D)</option>
<option value="Категория (E)" data-priceid="4">Категория (E)</option>
<option value="Категория (C)" data-priceid="5">Категория (C)</option>
</select>
<br />
<div id="prices" style="display:none">
<div id="catAprice">1000</div>
<div id="catBprice">1100</div>
<div id="catDprice">1200</div>
<div id="catEprice">1300</div>
<div id="catCprice">1400</div>
</div>
<br />
<select name="cel2" class="js-select2" id="cel2">
<option value="0" data-price="">Выберите</option>
<option value="Вариант 1" data-price="">Вариант 1</option>
<option value="Вариант 2" data-price="50">Вариант 2 (+50 руб, к сумме)</option>
<option value="Вариант 3" data-price="">Вариант 3</option>
<option value="Вариант 4" data-price="">Вариант 4</option>
<option value="Вариант 5" data-price="">Вариант 5</option>
</select>
<br />
<div id="resultPrice"></div>
<div id="resultPriceTaxi"></div>
<br />
<br />
<div id="sum"> руб</div>
</div>
<script>
$(document).ready(function () {
$(".js-select2").select2({
minimumResultsForSearch: Infinity,
language: "ru",
});
});
</script>
Ответы (1 шт):
Две эти суммы я пытаюсь прибавить к друг другу и вывести в конечный результат, но что-то у меня не получилось. Надо выводить с селекта 1 полученную сумму в результат id sum, но как только я в селекте 2 выбираю вариант с ценой, то цена эта плюсуеться с той суммой что вывелась с селекта1 и выводиться там же в конечном результате. id sum.
Добавьте функцию и запускате ее при изменении ваших селектов
//для выбранной категории подставляем цену из id блоков. и далее выводим в диве
$('#cel1').change(function() {
var $selected = $(this).find(":selected");
$('#resultPrice').html($("#prices div").eq(+$selected.data("priceid") - 1).text());
getRes()
})
//при выборе варианта во втором селекте, где есть цена data-price, выводим цену в див
$('#cel2').change(function() {
var $selected = $(this).find(":selected");
$('#resultPriceTaxi').html($selected.data("price"));
getRes()
})
let getRes = () =>{
//берем обе полученные суммы из див и плюсуем, и выводим в диве
const resultPrice = $("#resultPrice").html().replace();
const resultPriceTaxi = $("#resultPriceTaxi").html().replace();
let rezult = (Number(resultPrice) + Number(resultPriceTaxi)).toString().replace() + ' руб'; //плюсуем две суммы
$('#sum').html(rezult);
}
.block{
width: 200px;
}
#resultPrice{
font-size: 18px;
color: #B848FF;
}
#resultPriceTaxi{
font-size: 18px;
color: #7AB900;
}
#sum{
font-size: 22px;
color: #FF2525;
}
<script src="https://bazaub.ru/media/admin/js/2.2.4jquery.min.js"></script>
<link rel="stylesheet" href="https://bazaub.ru/media/celect2/select2.min.css" />
<script src="https://bazaub.ru/media/celect2/select2.min.js"></script>
<script src="https://bazaub.ru/media/celect2/ru.js"></script>
<div class="block">
<select name="cel1" class="js-select2" id="cel1">
<option value="0">Выберите</option>
<option value="Категория (А)" data-priceid="1">Категория (А)</option>
<option value="Категория (B)" data-priceid="2">Категория (B)</option>
<option value="Категория (D)" data-priceid="3">Категория (D)</option>
<option value="Категория (E)" data-priceid="4">Категория (E)</option>
<option value="Категория (C)" data-priceid="5">Категория (C)</option>
</select>
<br />
<div id="prices" style="display:none">
<div id="catAprice">1000</div>
<div id="catBprice">1100</div>
<div id="catDprice">1200</div>
<div id="catEprice">1300</div>
<div id="catCprice">1400</div>
</div>
<br />
<select name="cel2" class="js-select2" id="cel2">
<option value="0" data-price="">Выберите</option>
<option value="Вариант 1" data-price="">Вариант 1</option>
<option value="Вариант 2" data-price="50">Вариант 2 (+50 руб, к сумме)</option>
<option value="Вариант 3" data-price="">Вариант 3</option>
<option value="Вариант 4" data-price="">Вариант 4</option>
<option value="Вариант 5" data-price="">Вариант 5</option>
</select>
<br />
<div id="resultPrice"></div>
<div id="resultPriceTaxi"></div>
<br />
<br />
<div id="sum"></div>
</div>
<script>
$(document).ready(function () {
$(".js-select2").select2({
minimumResultsForSearch: Infinity,
language: "ru",
});
});
</script>