Темпераментный Shopify JQuery - PullRequest
0 голосов
/ 09 апреля 2019

Я наткнулся на стену, разрабатывающую собственную тему для сайта Shopify.

Фоновая / предполагаемая функциональность

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

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

Задача

Это все работает хорошо, пока мы не включили бесплатные подарки с несколькими вариантами. После того, как пользователю была предоставлена ​​возможность выбрать, какой вариант он хотел бы получить для подарка более низкого уровня, когда он попытался поменять его на более высокий уровень, либо старый подарок не будет удален, либо новый подарок не будет добавлен, или оба (но обычно старый подарок просто не удаляют). В любом случае поведение очень противоречиво и работает правильно только в 10% случаев.

Вот jQuery, который обменивает бесплатный подарок на подарок более высокого уровня:

// hide popup form when background is clicked
$('#overlay').click(function(e) {
    var form = $("#gift-popup");
    var overlay = $(this);
    // only hide if anywhere BUT form is clicked
    if (!form.is(e.target) && form.has(e.target).length === 0) {
        overlay.removeClass('active');
    }
});
// add free gift to cart (if selected by either radio button or drop down menu)
addToCart = function( queue = null, free_sample_line = null ) {
   // create queue if not created yet
   if (!queue) {
     var queue = '';
     queue = $('#gift-selection').children("option:selected").val();

     if (!queue) { // if there were no variants
       // iterate through checkboxes to find all the checked ones
       $('input[type=radio]').each(function() {
          if (this.checked) {
           queue = this.value;
         }
      });
    }        
  }

  $.ajax({
    type:"POST",url:"/cart/add/?id=" + queue, dataType:"HTML",
    success:function(){
      // refresh window
      window.location.replace("/cart"),
    }
  });

}
// swap free gift for another one
function swap( free_sample_line ) {
  $('#overlay').removeClass('active'); // hide popup
  $.get('/cart/change?line=' + free_sample_line + '&quantity=0'); // remove from cart
  addToCart(); // add new item to cart and refresh
}

Заранее благодарю за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...