Задать вопрос
@WebforSelf

Добавить к сумме еще одно поле в скрипте?

Такой вопрос, есть

.each(function(){
	var form = $(this);
	
	$('select[name^=variant]', form).on('change', function() {
		
		var sum = 0;
		$('select[name^=variant]', form).each(function(){
			sum += $(this).find('option:selected').data('price') || 0;
		});

		form.find('.prc-new').html(sum + ' ' + $(this).data('currency'));
	}).eq(0).change();
		
	
})


Есть функция которая при выборе определенного select сумирует все выбранные селекты используя значения из data атрибутов

<select class="select_product" name="variants[]" data-currency="руб*">
					<option value="">Договор с ОФД</option>
										<option value="217" data-price="2000" data-compare-price="2 400">ОФД на 12 месяцев 2000р.</option>
										<option value="218" data-price="2400" data-compare-price="3 000">ОФД на 15 месяцев 2400р.</option>
										<option value="219" data-price="4500" data-compare-price="6 500">ОФД на 36 месяцев 4500р.</option>
									</select>


Возникла необходимость помимо price сумировать еще и compare price и выводить его в диве .prc-old.

.each(function(){
	var form = $(this);
	
	$('select[name^=variant]', form).on('change', function() {
		
		var sum = 0;
                var compare_sum= 0;
		$('select[name^=variant]', form).each(function(){
			sum += $(this).find('option:selected').data('price') || 0;
                       compare_sum += $(this).find('option:selected').data('compare-price') || 0;
		});

		form.find('.prc-new').html(sum + ' ' + $(this).data('currency'));
                form.find('.prc-old').html(compare_sum + ' ' + $(this).data('currency'));
	}).eq(0).change();
		
	
})


В итоге данный код не сумирует compare price а пишет какой то бред.
  • Вопрос задан
  • 49 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
amorphis
@amorphis
Технолог в Студии Артемия Лебедева
Уберите пробелы в значениях "data-compare-price":
<option value="217" data-price="2000" data-compare-price="2400">ОФД на 12 месяцев 2000р.</option>
<option value="218" data-price="2400" data-compare-price="3000">ОФД на 15 месяцев 2400р.</option>
<option value="219" data-price="4500" data-compare-price="6500">ОФД на 36 месяцев 4500р.</option>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Krasnodar_etc
@Krasnodar_etc
fundraiseup
В
$(this).find('option:selected').data('compare-price')
у вас гарантированно лежит строка, а не число (из-за пробелов). При сложении двух строк что происходит? Правильно, они тупо соединяются

Я думаю, дальше вы всё сделаете сами)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы