@renat05

Как увеличить сумму только один раз?

На сайте есть 2 кнопки
САМОВЫЗОВ и ДОСТАВКА
При клике на доставку чисто увеличивается на 400
проблема в том что когда 2 раза нажимаю оно еще раз увеличивается
хотелось чтоб при клике во 2 раз больше не увеличивалось

$('#delivery').click(function() {
var $price = $("#set1");
$price.val(parseInt($price.val()) + 400);
});
  • Вопрос задан
  • 118 просмотров
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Я советую использовать радиобаттон вместо кнопок, и событие селект вместо клик. Так же на анселект можно уменьшать цену .
Ответ написан
Комментировать
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
$('#delivery').one('click', function() {
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!


Суть в том что ты вешаешь на кнопку событие click и функцию(НЕ анонимную).
И эта функция в свою очередь выполнят то что ты хочешь и удаляет сама себя. И получается что она срабатывает только 1 раз.
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
а. После клика сразу отписываться
б. Завести переменную и делать что-то типа
if(!clicked) {
  clicked = true;
  var $price = $("#set1");
  $price.val(parseInt($price.val()) + 400);
}

(вообще мой пример может быть достаточно не стабилен, тк я не уверен, как работает конкурентность в жс)

Но вообще хранить данные в разметке - это плохая практика. Представление должно зависеть от данных, а не наоборот.
Я так понял - это у вас некоторый калькулятор для стоимости покупки - советую в вашем случае создать некоторый класс, который будет реализовывать в себе логику просчёта стоимости, а потом отдельной функцией отрисовывать его состояние.
Это особенно удобно будет сделать на react или другом подобном фреймворке, который может реактивно перерисовывать html после изменения данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы