-=NICROSS=- Опубликовано 19 ноября, 2016 Жалоба Поделиться Опубликовано 19 ноября, 2016 Добрый день друзья! Сделал варианты товаров выпадающим списком таким образом. html разметка: <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <div class="price"> <div class="prc-old"> {$product->variant->compare_price|convert} {$currency->sign|escape} </div> <div class="prc-new"> {$product->variant->price|convert} {$currency->sign|escape} </div> </div> <div class="cart"> {if $product->variants|count > 0} {if $product->variants|count>1} <select name="variant"> {foreach $product->variants as $v} <option value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}">{$v->name}</option> {/foreach} </select> {else} <input name="variant" value="{$product->variant->id}" type="radio" checked style="display:none!important;"/> {/if} <input class="button" type="submit" value="В корзину"/> {else} Нет в наличии {/if} </div> </form> <!-- end --> JS // Выбор варианта $('select[name=variant]').live('change', function(){ price = $(this).find('option:selected').attr('data-price'); compare_price = ''; if(typeof $(this).find('option:selected').attr('data-compare-price') == 'string') compare_price = $(this).find('option:selected').attr('data-compare-price'); $(this).closest('form.variants').find('.prc-new').html(price); $(this).closest('form.variants').find('.prc-old').html(compare_price); return false; }); Теперь встал вопрос. Хочу вывести артикулы товаров на странице товара и каталога. Чтобы при выборе варианта при смене цены, так же менялся артикул. Подскажите, пожалуйста, как? Предполагаю, что нужно дописывать JS по аналогии с ценой, но в том не силен. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение Kasha Опубликовано 20 ноября, 2016 Решение Жалоба Поделиться Опубликовано 20 ноября, 2016 value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}">{$v->name}меняешь на value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" data-sku="{$v->sku|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}">{$v->name} и дописать JS собственно добавить // Выбор варианта$('select[name=variant]').live('change', function(){ price = $(this).find('option:selected').attr('data-price'); sku = $(this).find('option:selected').attr('data-sku'); compare_price = ''; if(typeof $(this).find('option:selected').attr('data-compare-price') == 'string') compare_price = $(this).find('option:selected').attr('data-compare-price'); $(this).closest('form.variants').find('.prc-new').html(price); $(this).closest('form.variants').find('.sku*').html(sku); $(this).closest('form.variants').find('.prc-old').html(compare_price); return false;}); Где sku* - название класса в который записан артикул в шаблоне. в приведенном вами коде этого просто нет, по этому не могу указать точно. Цитата Ссылка на сообщение Поделиться на другие сайты
-=NICROSS=- Опубликовано 22 ноября, 2016 Автор Жалоба Поделиться Опубликовано 22 ноября, 2016 Все работает. Спасибо большое! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.