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


Фото
- - - - -

менять цену в зависимости от выбранного radiobutton


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

#1 megauser

megauser
  • Пользователь
  • 51 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 28.09.2019 - 12:32

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

 

А как сделать чтоб было несколько radiobutton а цена одна , и менялась бы в зависимости от radiobutton.

 



#2 phukortsin

phukortsin
  • Фрилансер
  • 931 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 28.09.2019 - 13:31

А как сделать чтоб было несколько radiobutton а цена одна , и менялась бы в зависимости от radiobutton.

Весьма сложно цену менять, если она ОДНА.

Если Вы хотите, чтобы было НЕСКОЛЬКО ГРУПП радиокнопок и показываемая цена менялась в зависимости от выбранных в группах значений, то такое делается отдельным программированием.
Методы можно почерпнуть, например, тут:
http://forum.simplac...-размер-и-цвет/

#3 Noxter

Noxter

    Simpla Developer

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

Опубликовано 28.09.2019 - 13:58

Точно также как и со списком.

#4 megauser

megauser
  • Пользователь
  • 51 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 29.09.2019 - 20:20

Точно также как и со списком.

 

 

{foreach $product->variants as $v}
			<tr class="variant">
				<td>
<input data-price="{$v->price|convert} {$currency->sign|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}" id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
				</td>
				<td>
					{if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
				</td>
			</tr>
			{/foreach}

// Выбор варианта
$('input[name=variant]').on('change', function(){
    price = $(this).find('input:checked').attr('data-price');
    compare_price = $(this).find('input:checked').attr('data-compare-price');
    $(this).closest('form.variants').find('.price').html(price);
    $(this).closest('form.variants').find('.price-old').html(compare_price);
    return false;
});

 

 

 

Как то так? не работает


Изменено: megauser, 29.09.2019 - 20:21


#5 Kosjak76

Kosjak76
  • Модератор
  • 3 843 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 29.09.2019 - 20:26

$('input[name=variant]').on('click', function(){



#6 megauser

megauser
  • Пользователь
  • 51 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 29.09.2019 - 20:59

$('input[name=variant]').on('click', function(){

 

Спасибо



#7 megauser

megauser
  • Пользователь
  • 51 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 29.09.2019 - 22:02

$('input[name=variant]').on('click', function(){

 

В целом функцию упростил

 

$(function(){
$('input[name=variant]').change(function(){
  $('.price').html($(this).attr('data-price'));
  $('old-price').html($(this).attr('data-compare_price')||'');
  return false;
    });

Но проблема теперь в том что если добавить radiobutton в список товаров

где на странице много товаров, то при клике на радиокнопку меняется цена у всех товаров. Как поправить ?



#8 Noxter

Noxter

    Simpla Developer

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

Опубликовано 29.09.2019 - 23:18

В целом функцию упростил

$(function(){
$('input[name=variant]').change(function(){
  $('.price').html($(this).attr('data-price'));
  $('old-price').html($(this).attr('data-compare_price')||'');
  return false;
    });
Но проблема теперь в том что если добавить radiobutton в список товаров
где на странице много товаров, то при клике на радиокнопку меняется цена у всех товаров. Как поправить ?


А вот нечего было упрощать, на то и расчёт чтобы в списке товаров тоже работало!

#9 megauser

megauser
  • Пользователь
  • 51 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:Россия

Опубликовано 29.09.2019 - 23:40

А вот нечего было упрощать, на то и расчёт чтобы в списке товаров тоже работало!

Данная функция не меняет значение цены. 

 

$('input[name=variant]').on('click', function(){
    price = $(this).find(':checked').attr('data-price');
    compare_price = $(this).find('input:checked').attr('data-compare-price');
    $(this).closest('form.variants').find('.price').html(price);
    $(this).closest('form.variants').find('.old-price').html(compare_price);
    return false;
});

Более того, перестает работать сам выбор радиокнопки.


Изменено: megauser, 29.09.2019 - 23:42


#10 Noxter

Noxter

    Simpla Developer

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

Опубликовано 30.09.2019 - 00:05

Бить указкой по таким рукам нужно!
price = $(this).attr('data-price');
compare_price = $(this).attr('data-compare-price');
или:
price = $(this).data('price');
compare_price = $(this).data('compare-price');





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

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