На чем пишут калькулятор доставки? [закрыт]

147
06 августа 2019, 23:20

Скорее всего скрипт, но как понимаю, есть варианты с использованием обращений к БД, либо без него. Хотелось бы конечно без, но в чем плюсы с БД и различия сложностей - можно сообщить) Итоговым вариантом такого калькулятора хотелось бы видеть функционал как у крупных транспортных компаний - ДЛ, желдор, пэк.. Спасибо!

Answer 1

Сервер - место, где можно закрыться за железной дверью и никто тебя не достанет. Поэтому считать что-то на клиенте (js), а тем более цену и доверять ей - плохая идея. Лучший вариант - считать все и на клиенте (для быстроты и UX) и пересчитывать на сервере (для безопасности).

И так, можно каждому значению поля ввода присвоить атрибут коэффициента (отрицательное или положительное число), например, который будет за счет перемножения на значение поля либо увеличивать либо уменьшать итоговую сумму. В конце все эти произведения нужно сложить и получить конечный результат. Тривиальный пример, но приблизительно так все работает:

$("input, select").on("input change", () => { 
  let total = 0; 
  $("input, select").each((index, item) => { 
    let elem = $(item); 
    let val = Number(elem.val()); 
    let multiply = Number(elem.attr("data-multiply")); 
    total += (val * multiply); 
  }); 
  $("#total").html("Итого: " + total); 
});
body { 
  display: flex; 
  flex-direction: column; 
  width: 60%; 
} 
 
body>*:not(span) { 
  margin-bottom: 20px; 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<span>Чило во мне перемножится на 200</span> 
<input data-multiply="200" type="number"> 
<span>Чило во мне перемножится на 2 (0 - 100)</span> 
<input data-multiply="2" type="range" value="0"> 
<select data-multiply="1.2"> 
  <option value="0">Чило во мне увеличится на 20%</option> 
  <option value="100">100</option> 
  <option value="200">200</option> 
  <option value="300">300</option> 
</select> 
 
<span id="total">Итого: </span>

READ ALSO
Обработка div&#39;a циклом в Javascript

Обработка div'a циклом в Javascript

Есть кусок кода сайта

141
Можно ли ? ::before ::arfter

Можно ли ? ::before ::arfter

Подскажите, можно ли достучатся из js к псевдоэлементам DOMa?

117
Как выполнить клик по кнопки если пользователь зашел на сайт с мобильного?

Как выполнить клик по кнопки если пользователь зашел на сайт с мобильного?

Как выполнить авто клик по кнопке если пользователь зашел на сайт с мобильного ? Вот код кнопки : <button onclick="hideme(this)" class="close">X - Закрыть эти...

128