Перейти к содержимому


Фото
- - - - -

подсчет общей суммы в карточке товара


  • Чтобы отвечать, сперва войдите на форум
5 ответов в теме

#1 Kami

Kami
  • Пользователь
  • 345 сообщений
  • Откуда:Россия

Опубликовано 24.01.2019 - 16:11

Друзья, в карточке товара выбор товара идет с помощью select.

Цена при выборе изменяется с помощью 

 

$('select[name=variant]').live('change', function(){
    price = $(this).find('option:selected').attr('data-price');
    compare_price = $(this).find('option:selected').attr('data-compare-price');
    $(this).closest('form.variants').find('.price span').html(price);
    $(this).closest('form.variants').find('.compare_price').html(compare_price);
    return false;
});	

Дальше идет input с возможностью выбора количества товара 

 

	<div class="count">
	<input class="amount" type="text" name="amount" value="1">
	<span class="plus"></span>   
        <span class="minus"></span>
	</div>


              $('.minus').click(function () {
                var $input = $(this).parent().find('.amount');
                var count = parseInt($input.val()) - 1;
                count = count < 1 ? 1 : count;
                $input.val(count);
                $input.change();
                return false;
            });
            $('.plus').click(function () {
                var $input = $(this).parent().find('.amount');
                $input.val(parseInt($input.val()) + 1);
                $input.change();
                return false;
            });

Сейчас работает все как нужно, но потребовалось вывести общую сумму в

 

<div class="total_price"></div>

Получается поле изначально имеет цену товара, при смене варианта товара select цена меняется на текущую цену варианта.

Дальше при клике plus или minus меняется значение input и расчитывается цена исходя из цена варианта*количество.

 

Подскажите как реализовать данную задачу, заранее спасибо.



#2 shooroop

shooroop
  • Фрилансер
  • 920 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 24.01.2019 - 19:45

мда. уроки по JS  посмотри складывание и перемножение сумм



#3 Kami

Kami
  • Пользователь
  • 345 сообщений
  • Откуда:Россия

Опубликовано 24.01.2019 - 22:36

мда. уроки по JS  посмотри складывание и перемножение сумм

 

Вопрос стоит как это оптимизировано сделать а не городить кучу функций.



#4 shooroop

shooroop
  • Фрилансер
  • 920 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 24.01.2019 - 23:27

Вопрос стоит как это оптимизировано сделать а не городить кучу функций.

 

те ты хочешь функцию умножения заменить на какую функцию?))



#5 Kami

Kami
  • Пользователь
  • 345 сообщений
  • Откуда:Россия

Опубликовано 24.01.2019 - 23:56

те ты хочешь функцию умножения заменить на какую функцию?))

 

Ладно, любите вы тут писать " читайте мат часть" , " учите основы js ". Не опускайтесь до уровня Нокстера, я знаю вы хороший человек.

 

Те функции что я выше написал были взяты  с данного форума, и вопрос был стоит ли их как то оптимизировать, например  не создавать 2 функции click  .plus и .minus. 

Вместо этого написали чтоб сложил ( умножил) и нормуль. Если не сложно посмотрите данный вариант (может что посоветуйте поправить), работает все как нужно.

 

2 основных момента - убрал live метод. ( он вроде уже не используется) и 

навешал на кнопки plus munus аттрибуты data-change="+1" и data-change="-1"

 

При выборе варианта или изменении количества товара сумма в поле .total_price пересчитывается.

 

 

function calcSum() {
  const
    price = $('[name="variant"] option:checked').data('price').replace(',', '.'),
    amount = $('[name="amount"]').val();
  $('.total_price').text((price * amount).toFixed(2).replace('.', ','));
}
$('[name="variant"]').on('change', function() {
  $('.price.prc-new span').text($(this).find('option:checked').data('price'));
  calcSum();
});
$('[name="variant"]').on('change', calcSum);
$('[data-change]').click(function() {
  const
    change = +$(this).data('change'),
    $amount = $('[name="amount"]');
  $amount.val(Math.max(1, +$amount.val() + change));
  calcSum();
});


#6 yr4ik

yr4ik
  • Фрилансер
  • 925 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:Украина Чернигов

Опубликовано 25.01.2019 - 03:30

    var sum = 0;
    $(".уточняющий элемент .amount").each(function(){
        sum += parseInt($(this).val()||0);
    });
    $(".total").val(sum);






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых