Как вычислить процент от двух известных сумм?
Известна базовая сумма, есть два пустых поля: "новая цена" и "процент". Мне удалось написать логику, если вписать цифру процента в поле "процент", то вычисляется верная сумма, которая вставится в поле "новая цена".
Однако, если мы введем в поле "новая цена" цифру, то в поле "процент" вычисляется неверный процент от базовой суммы.
$(document).ready(function() {
let priceBase = parseInt($('.price-base').text().replace(/[^0-9]/gi, '')); // получаем базовую цену
let priceDiscount = '.price-discount'; // поле с ценой со скидкой
let percent = '.percent'; // поле процентов
$(percent).on('keyup change', function() {
let thisPercent = $(this).val();
let resultPrice = priceBase / 100 * thisPercent; //вычисление процентов
$(priceDiscount).val(priceBase - resultPrice);
});
//Пытаюсь вычислить процент от двух сумм
$(priceDiscount).on('keyup change', function() {
let thisPrice = $(this).val();
let resultPrice = thisPrice / priceBase;
$(percent).val(resultPrice);
});
});
.container {
display: flex;
}
.container div {
padding: 30px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="price-base">100 ₽</div>
<div>
<input type="text" class="price-discount" placeholder="новая цена"> ₽
</div>
<div>
<input type="text" class="percent" placeholder="процент"> %
</div>
</div>
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
$(document).ready(function() {
let priceBase = parseInt($('.price-base').text().replace(/[^0-9]/gi, '')); // получаем базовую цену
let priceDiscount = '.price-discount'; // поле с ценой со скидкой
let percent = '.percent'; // поле процентов
$(percent).on('input', function() {
let thisPercent = $(this).val();
let resultPrice = priceBase / 100 * thisPercent; //вычисление процентов
$(priceDiscount).val(priceBase - resultPrice);
});
//Пытаюсь вычислить процент от двух сумм
$(priceDiscount).on('input', function() {
let thisPrice = $(this).val();
let resultPrice = Math.round(100 - thisPrice * 100 / priceBase);
$(percent).val(resultPrice);
});
});
.container {
display: flex;
flex-flow: column;
}
.container div {
padding: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="price-base">Базовая цена - 120 ₽</div>
<div>
Новая цена: <input type="number" class="price-discount" placeholder="новая цена"> ₽
</div>
<div>
Процент скидки: <input type="number" class="percent" placeholder="процент"> %
</div>
</div>