Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Здравствуйте. Помогите решить задачку) Сделал варианты товара выпадающим списком, хочу чтобы блок селекта был виден только когда эти варианты есть. С вариантами всё в корзину добавляет, а вот когда без варианта товар - не даёт добавить в корзину, пишется ошибки 

Uncaught ReferenceError: variant is not defined
    at HTMLFormElement.<anonymous> (ajax_cart.js:11)
    at HTMLDocument.dispatch (jquery.min.js:3)
    at HTMLDocument.v.handle (jquery.min.js:3)

 Вот код карточки товара

<!-- Выбор варианта товара -->
                     {if $product->variants|count>0}
                    <form class="variants" action="/cart">                       
                       
  {if $product->variants|count>1}
                             <div class="blockselectprod">
                                <b>Выберите вариант</b>
                                <div class="podipselect">
                                    <select name="variant" class="ipselect">
                                        {foreach $product->variants as $v}
                                        <option value="{$v->id}" data-price="{$v->price|convert:2}" data-compare-price="{$v->compare_price|convert:2} ">
                                            {if $v->name}
                                            <label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
                                        </option>
                                        {/foreach}
                                    </select>
                                </div>
                            </div>
{/if}
                           <div class="price">
                                <div class="price-value" style="text-align:center;">
                                    <span class="price">{if $v->compare_price|convert:2 > 0}
                                    <span class="compare_price">{$v->compare_price|convert:2}</span>{/if}</span>
                                    <span class="price prc-new">{$product->variant->price|convert:2}</span>
                                    <span class="currency" style="margin-left: 6px;font-size: 18px;">руб.</span>

                                </div>
                            </div>
                     
                     <div class="avl"><i class="fa fa-check-circle"></i><span>В наличии</span></div>
                            <div class="order-buttons">
                                <button type="submit" class="addCart"><i class="glyphicon glyphicon-shopping-cart" style="margin-right:6px;"></i>Купить</button>
                                <div class="amountposit">
                                    <div class="amount">
                                        <input type="text" class="add_input" name="amount" value="1">
                                        <input type=button value="-" class="add add1" onclick="javascript:this.form.amount.value= this.form.amount.value<=1 ? 1 :parseInt(this.form.amount.value)-1 ;">
                                        <input type=button value="+" class="add add2" onclick="javascript:this.form.amount.value= this.form.amount.value>=1000 ? 1000 :parseInt(this.form.amount.value)+1 ;">
                                    </div>
                                </div>
                            </div>
                            
                            <hr class="xs">
                            <div class="text-xs text-transparent">Понравилось предложение? Поделитесь!</div>
                            
                    </form>
                      {else} Нет в наличии {/if}
                    <!-- Выбор варианта товара (The End) -->
Изменено пользователем AndreiX1
Ссылка на сообщение
Поделиться на другие сайты

Вы делаете неправильно

Селект должен быть ОБЯЗАТЕЛЬНО

Но, если вариант у товара один - можно всему блоку поставить display: none;

Ссылка на сообщение
Поделиться на другие сайты

Вы делаете неправильно

Селект должен быть ОБЯЗАТЕЛЬНО

Но, если вариант у товара один - можно всему блоку поставить display: none;

не подскажите как это должно выглядеть?

Ссылка на сообщение
Поделиться на другие сайты

Вместо

  {if $product->variants|count>1}
                             <div class="blockselectprod">
                                <b>Выберите вариант</b>
                                <div class="podipselect">
                                    <select name="variant" class="ipselect">
                                        {foreach $product->variants as $v}
                                        <option value="{$v->id}" data-price="{$v->price|convert:2}" data-compare-price="{$v->compare_price|convert:2} ">
                                            {if $v->name}
                                            <label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
                                        </option>
                                        {/foreach}
                                    </select>
                                </div>
                            </div>
{/if}

Надо так

  
                             <div class="blockselectprod"{if $product->variants|count == 1}style="display:none;"{/if}>
                                <b>Выберите вариант</b>
                                <div class="podipselect">
                                    <select name="variant" class="ipselect">
                                        {foreach $product->variants as $v}
                                        <option value="{$v->id}" data-price="{$v->price|convert:2}" data-compare-price="{$v->compare_price|convert:2} ">
                                            {if $v->name}
                                            <label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
                                        </option>
                                        {/foreach}
                                    </select>
                                </div>
                            </div>
Ссылка на сообщение
Поделиться на другие сайты

 

Вместо

  {if $product->variants|count>1}
                             <div class="blockselectprod">
                                <b>Выберите вариант</b>
                                <div class="podipselect">
                                    <select name="variant" class="ipselect">
                                        {foreach $product->variants as $v}
                                        <option value="{$v->id}" data-price="{$v->price|convert:2}" data-compare-price="{$v->compare_price|convert:2} ">
                                            {if $v->name}
                                            <label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
                                        </option>
                                        {/foreach}
                                    </select>
                                </div>
                            </div>
{/if}

Надо так

  
                             <div class="blockselectprod"{if $product->variants|count == 1}style="display:none;"{/if}>
                                <b>Выберите вариант</b>
                                <div class="podipselect">
                                    <select name="variant" class="ipselect">
                                        {foreach $product->variants as $v}
                                        <option value="{$v->id}" data-price="{$v->price|convert:2}" data-compare-price="{$v->compare_price|convert:2} ">
                                            {if $v->name}
                                            <label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
                                        </option>
                                        {/foreach}
                                    </select>
                                </div>
                            </div>

Спасибо) работает)) 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...