megauser Опубликовано 28 сентября, 2019 Жалоба Поделиться Опубликовано 28 сентября, 2019 Есть на форуме решение где radiobutton меняется на select и цена меняется в зависимости от выбранного в селекте значения. А как сделать чтоб было несколько radiobutton а цена одна , и менялась бы в зависимости от radiobutton. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 28 сентября, 2019 Жалоба Поделиться Опубликовано 28 сентября, 2019 А как сделать чтоб было несколько 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/ Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 28 сентября, 2019 Жалоба Поделиться Опубликовано 28 сентября, 2019 Точно также как и со списком. Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 29 сентября, 2019 Автор Жалоба Поделиться Опубликовано 29 сентября, 2019 (изменено) Точно также как и со списком. {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; }); Как то так? не работает Изменено 29 сентября, 2019 пользователем megauser Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 29 сентября, 2019 Жалоба Поделиться Опубликовано 29 сентября, 2019 $('input[name=variant]').on('click', function(){ Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 29 сентября, 2019 Автор Жалоба Поделиться Опубликовано 29 сентября, 2019 $('input[name=variant]').on('click', function(){ Спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 29 сентября, 2019 Автор Жалоба Поделиться Опубликовано 29 сентября, 2019 $('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 в список товаровгде на странице много товаров, то при клике на радиокнопку меняется цена у всех товаров. Как поправить ? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 29 сентября, 2019 Жалоба Поделиться Опубликовано 29 сентября, 2019 В целом функцию упростил $(function(){ $('input[name=variant]').change(function(){ $('.price').html($(this).attr('data-price')); $('old-price').html($(this).attr('data-compare_price')||''); return false; }); Но проблема теперь в том что если добавить radiobutton в список товаровгде на странице много товаров, то при клике на радиокнопку меняется цена у всех товаров. Как поправить ? А вот нечего было упрощать, на то и расчёт чтобы в списке товаров тоже работало! Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 29 сентября, 2019 Автор Жалоба Поделиться Опубликовано 29 сентября, 2019 (изменено) А вот нечего было упрощать, на то и расчёт чтобы в списке товаров тоже работало!Данная функция не меняет значение цены. $('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; }); Более того, перестает работать сам выбор радиокнопки. Изменено 29 сентября, 2019 пользователем megauser Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 29 сентября, 2019 Жалоба Поделиться Опубликовано 29 сентября, 2019 Бить указкой по таким рукам нужно! price = $(this).attr('data-price'); compare_price = $(this).attr('data-compare-price'); или: price = $(this).data('price'); compare_price = $(this).data('compare-price'); Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.