Исчезла кнопка подтверждения заказа

Добрый день!

Столкнулся с проблемой. На сайте имеется нетиповой дизайн и частично (большинство функций сохранены) исходный код - корзина покупателя реализована в виде всплывающего окна.

Сайт принял в работу как есть - без документации, пояснений, связи с разработчиками нет.

Вероятно в процессе работ задел какую-то строчку (откатиться назад не могу, проделано много других работ) и на этапе подтверждения заказа исчезла кнопка (submit), которая отправляет заказ в обработку.

Прошу помощи в восстановлении функциональности.

2 ответа

  • 1

    дайте хоть ссылку на сайт - посмотрим

    • +1
      NHShop NHShop 6 июля 2016 09:33 #

      http://nippon-house.ru/

      Вообще на сайте очень много ошибок, потихоньку исправляю.

      UPD к ситуации:

      Внутри cart.html присутствуют вот такие скрипты:


      <script>
          $(document).ready(function(){
              var tot = $(".total").text();
              tot = tot.replace(/[^\d]/gi, '')*1;
              //var price = $(".shipping_pricing").text()*1;
              
              $("#frst_b").click(function(){
                  //alert(tot);
                  if(tot < 2000){
                      $(".pullup").show();
                      $(this).prop( "disabled", false );
                      $('.frst_b_h .checkout_holder').css("background", "#B6B693");
                      $('.frst_b_h .green').css("background", "#B6B693");
                     return false; 
                  }
              })
              
              $("select").change(function(){
                  var town = $(this).attr("class");
                  var price = $(this).children("option:selected").attr("dop");
                  var order = $(this).children("option:selected").attr("rel");
                 // alert(order);
                  //var price = $(".shipping_pricing").text();
                  $("#"+town).children("p").children("b").text(order);
                  $("#"+town).children("ul").children("li:first-child").children("b").text(order);
                  $("#"+town).children("ul").children("li:last-child").children("b").text(price);
                  $("#"+town).show();
                  if (tot < order){
                      $("#add_price").val(price);
                  }
                  //alert(town)
                  $("#no-border_ex").show();
              })
              
              $("#scnd_b").click(function(){
                  $(".total").text(tot+price);
                  //alert(tot+price);
                  //return false;
              })
          })
      </script>
      
      <script>
      $(document).ready(function() { 
      	$("#cart_form").submit(function(){ 
      		$("#cart_hld_inner").css('height','630px');
      		$("#cart_hld_inner").css('overflow-y','scroll');
      		var form = $(this);
      		var msng = form.serialize(); 
      		msng = msng  + '&checkout=Proceed to checkout&inpopup=1';
      			$.ajax({ 
      			   type: 'POST', 
      			   url: '{$wa_app_url}cart/', 
      			   dataType: "html",
      			   data: msng,
      		       success: function(data){ // событие после удачного обращения к серверу и получения ответа
      		       		if (data['error']) { // если обработчик вернул ошибку
      		       			alert(data['error']); // покажем её текст
      		       		} else { // если все прошло ок
      		       			//alert(data);
      		       			$("#cart_hld_inner").html(data);
      		       			//alert(data);
      		       			$(".step.current").next("div.step").addClass("current");
      		       			//alert('Письмо отвравлено! Чекайте почту! =)'); // пишем что все ок
      		       			form.find('input[type="submit"]').prop('disabled', false);
      		       			
      		       		}
      		         },
      		       error: function (xhr, ajaxOptions, thrownError) { // в случае неудачного завершения запроса к серверу
      		            alert(xhr.status); // покажем ответ сервера
      		            alert(thrownError); // и текст ошибки
      		         },
      		       complete: function(data) { // событие после любого исхода
      		            form.find('input[type="submit"]').prop('disabled', false); // в любом случае включим кнопку обратно
      		         }
      			     });
      		return false; // вырубаем стандартную отправку формы
      	});
      });
          
      </script>

      Первая часть кода (включая $("#scnd_b")) генерирует поведение кнопок и промежуточного pullup'а с кнопкой "Оформить заказ" - тут разработчик все таки оставил комментарии...

      Вторая часть кода, судя по всему, готовит некие параметры заказа для чекаута

      var msng = form.serialize(); 
      msng = msng  + '&checkout=Proceed to checkout&inpopup=1';

      и передает их в url: '{$wa_app_url}cart/',

      И вот какая особенность. При таком варианте во всплывающем окне появляется форма подтверждения заказа (по предустановленному в бекэнде порядку - контактные данные - оплата и т.д), но кнопка "Оформить заказ" отсутствтует, хотя вроде бы, если судить по этому коду


      complete: function(data) { // событие после любого исхода
      form.find('input[type="submit"]').prop('disabled', false); // в любом случае включим кнопку обратно

      присутствовать она должна.

      НО! Если мы меняем url: '{$wa_app_url}cart/', на url: '{$wa_app_url}checkout/', то после нажатия кнопки "Оформить заказ" на pullup'е, заказ оформляется без проверки данных, подхватывая их личного кабинета. Тоже не совсем понятное мне поведение..

  • 1

    А... так у вас очень там все допилено...

    без ковыряния в коде не разобраться

    • +1
      NHShop NHShop 6 июля 2016 10:07 #

      При нажатии на кнопки "Оформить заказ" в отладчике появляется строка "Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience". Может ли это как-то влиять на работу скрипта?

    • +1
      NHShop NHShop 7 июля 2016 13:36 #

      Решил проблему частичным возвратом к дефолтным функциям cart и checkout и перерисовкой CSS.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите