Jump to content

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


Recommended Posts

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

 

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

 

Link to post
Share on other sites

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

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

 

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

Методы можно почерпнуть, например, тут:

http://forum.simplacms.ru/topic/6102-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-%D0%B8-%D1%86%D0%B2%D0%B5%D1%82/

Link to post
Share on other sites

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

 

 

{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;
});

 

 

 

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

Edited by megauser
Link to post
Share on other sites

$('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 в список товаров

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

Link to post
Share on other sites

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

 

 

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

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

 

 

А вот нечего было упрощать, на то и расчёт чтобы в списке товаров тоже работало!
Link to post
Share on other sites

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

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

 

$('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;
});

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

Edited by megauser
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...