@renat05

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

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

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


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

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

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

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
23 янв. 2021, в 17:51
150000 руб./за проект
23 янв. 2021, в 17:34
10000 руб./за проект
23 янв. 2021, в 17:31
500 руб./за проект