Изменение формулы расчета значения переменной в зависимости от вводимых данных в поле input
На днях подкинули небольшую задачку по созданию калькулятора. Вроде бы ничего сложного, но...
Есть некий принтер с шириной печати 3.2 м. Задается длина и ширина изделия, после чего, бОльшую сторону этого изделия мы делим на 3.2 - получается наименьшее количество необходимых для склейки швов. Итого, для размеров 3х12 мы выполняем 12 / 3.2, а для размеров 10*4 - 10 / 3.2.
Не удается задать формулу переменной, которая бы менялась в зависимости от веденных значений полей input ("dlin","shir"). В результате, не запускается функция if и формула расчета не меняется. Получается, что всегда делится длина (первая инструкция if).
Как решить данную проблему?
$(document).ready(function() {
function bansol() {
var dlin = $('#dlin').val().replace(',', '.');
var shir = $('#shir').val().replace(',', '.');
$mate = $('select#mate option:selected').attr('data-mate');
var price = dlin * shir * $mate;
var newprice = Math.ceil(price);
var rulo = 3.2;
if (dlin >= shir) {
shvii = dlin / rulo;
} else if (dlin < shir) {
shvii = shir / rulo;
}
$('.shvi').html(shvii);
$('.cur').html(newprice);
$('.rub').show();
};
$('.calculator').on('click keyup', bansol);
})
Ответы (2 шт):
Сравнивайте числа, а не строки.
var dlin = +$('#dlin').val().replace(',', '.');
var shir = +$('#shir').val().replace(',', '.');
Можно вызвать Math.min или Math.max она сама преобразует строки в числа.
Я так и не понял написано большую сторону, но минимальное число швов.
function bansol() {
var dlin = $('#dlin').val().replace(',', '.');
var shir = $('#shir').val().replace(',', '.');
var rulo = 3.2;
shvii = Math.min(dlin, shir) / rulo;
$('.shvi').html(shvii);
};
$('.calculator').on('click keyup', bansol);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="dlin">
<input id="shir">
<p class="shvi"></p>
<button class="calculator">считать</button>