PageSourceSearch

https://underwear2020.ru/design/page-order.js?lc=1775326699

js underwear2020.ru collected 2026-10-08 15:22:27 UTC 23,399 bytes, 526 lines download raw bytes

1// Быстрый заказ
2function quickOrder(formSelector) {
3  // Находим форму, которую отправляем на сервер, для добавления товара в корзину
4  var formBlock = $($(formSelector).get(0));
5  // Проверка на существование формы отправки запроса на добавление товара в корзину
6  if(1 > formBlock.length || formBlock.get(0).tagName != 'FORM') {
7    alert('Не удалось найти форму добавления товара в корзину');
8    return false;
9  }
10  // Получаем данные формы, которые будем отправлять на сервер
11  var formData = formBlock.serializeArray();
12  // Сообщаем серверу, что мы пришли через ajax запрос
13  formData.push({name: 'ajax_q', value: 1});
14  // Так же сообщим ему, что нужно сразу отобразить форму быстрого заказа 
15  formData.push({name: 'fast_order', value: 1});
16  // Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
17  $.ajax({
18    type    : "POST",
19		cache	  : false,
20		url		  : formBlock.attr('action'),
21		data		: formData,
22		success: function(data) {
23		  
24		  	var str = $(data).html();
25				var cart_count = $(data).find('#newCartCount').text().replace(/ /g,'');
26
27				$('.header .cart .count').html(cart_count);
28				
29				var cartData = $(data).find('#newCartData').html();
30				$('.header .cart .dropdown').html(cartData);
31        quantity();
32				$.fancybox.open(data, {
33				keyboard: false,
34				baseClass: "fastOrder",
35				afterShow: function(){
36          coupons();
37          orderMinPrice();
38          $('.fastOrder__form').validate({
39            errorPlacement: function(error, element) { }
40          });
41          ProdCart($('.product-view') , 'start');
42          ajaxCartQty();
43          NavMenu();
44          OrderScripts();
45          validFormsCheckbox();
46          // Форма регистрации нового пользователя, при оформлении заказа
47          $('.OrderShowPass').click(function(){
48            ChangePasswordFieldType(this, $(this).closest('.password-item').find('.sites_client_pass'));
49            return false;
50          });
51				}
52			})
53		}
54	});
55  return false;
56}
57
58function orderMinPrice(){
59  if($('#minPriceOrder').length){
60    var minPrice = parseInt($('#minPriceOrder').val().replace(/ /g,''));
61    var sum = parseInt($('#quickform .TotalSum .num').text().replace(/ /g,''));
62    var buttonOrder = $('#order-btn');
63    // Считаем остатов
64    var remainder = minPrice - sum;
65    if (remainder <= 0)
66    {
67      buttonOrder.removeAttr('disabled');
68      $('.min_priceOrder_info').hide();
69    }
70    else{
71      buttonOrder.attr('disabled', 'disabled');
72      $('.min_priceOrder_info').show();
73    }
74    
75  }
76}
77  
78            
79// Отправка купона при оформлении заказа
80function coupons() {
81  var $submitBtn = $('.coupons .coupon-btn');
82  var $cuponInput = $('#quick_form_coupon_code');
83  var $couponParent = $cuponInput.parent();
84  var $resetBtn = $('.coupons .coupon_clear');
85  var $totalCouponBlock = $('.orderContainer .discounttr');
86  var $cartCouponInputPrice = $('input.cartCouponPrice');
87  var $cartCoupon = $('.couponBlockSale');
88  var $cartCouponCount = $cartCoupon.find('.couponNum');
89  
90  var $cuponInputDop = $('.formfast-cart .order-promo_container .order-promo_input input');
91  var $resetBtnDop = $('.formfast-cart .order-promo_container .coupon_clear');
92  var $applyBtnDop = $('.formfast-cart .order-promo_container .order-promo_btn');
93  var $saleBlockDop = $('.formfast-cart .order-promo_couponBlockSale');
94  var $saleBlockDopCount = $saleBlockDop.find('.couponNum');
95  
96  // Наличие скидки при старте
97  if ($totalCouponBlock.length > 0){
98    $('input.startDiscount').attr('data-name', $totalCouponBlock.find('.title').attr('data-name'));
99    $('input.startDiscount').attr('data-value', $totalCouponBlock.find('.price .count').attr('data-value'));
100    $('input.startDiscount').attr('data-currency_name', $totalCouponBlock.find('.price .count').attr('data-currency_name'));
101    var dis = parseInt($('.formfast-cart .TotalSum').data('total')) - parseInt($('.formfast-cart .TotalSum').data('total-sum'));
102    $('input.startDiscount').attr('data-price', dis);
103  }
104
105  $applyBtnDop.on('click', function(){
106    var code = $cuponInputDop.val();
107    $cuponInput.val(code);
108    $submitBtn.trigger('click');
109  })
110  
111  $submitBtn.click(function(){
112    var url = '/order/stage/confirm';
113    var val = $cuponInput.val();
114    var orderSumDefaul = $('.coupons input[name="orderSumDefaul"]').val();
115    if($cuponInput.val().length > 0){
116      // Получаем данные формы, которые будем отправлять на сервер
117      var formData = $('#myform').serializeArray();
118      formData.push({name: 'ajax_q', value: 1});
119      formData.push({name: 'only_body', value: 1});
120      formData.push({name: 'form[coupon_code]', value: val});
121      $.ajax({
122        type: "POST",
123        cache: false,
124        url: url,
125        data: formData,
126        success: function(data) {
127          // Получаем блок скидки
128  				var discountBlock = $(data).closest('#myform').find('.discount');
129  				var discountName = discountBlock.find('.name').text();
130  				var discountPrice = discountBlock.find('.value').html();
131  				var discountPercent = discountBlock.find('.percent').html();
132  				var discountEndPrice = discountBlock.find('.endPrice').find('.num').html();
133  				if (discountEndPrice) discountEndPrice.replace(/ /g,'');
134  				
135  				var totalBlock = $(data).closest('#myform').find('.total');
136  				
137  				// Определяем наличие скидки в % или валюте
138  				if (discountPrice) {
139  					discountPrice = discountPrice;
140  					$totalCouponBlock.show();
141  				}else if (discountPercent){
142  					discountPrice = discountPercent;
143  					$totalCouponBlock.show();
144  				}else {
145  					$totalCouponBlock.hide();
146  				}
147  				
148          // Записываем название и размер скидки по купону
149          $totalCouponBlock.find('.title').html(discountName);
150  				$totalCouponBlock.find('.price .count').html(discountPrice);
151          
152          // Получаем новую итоговую стоимость заказа (сума товаров со скидкой)
153          var newTotalSumWithDisc = parseInt(totalBlock.find('td.total-sum').data('total-sum'));
154          var deliveryPrice = $('.formfast-cart .delivery-sum .price .num').text().replace(/\s/g, '');
155          
156          // сумма товаров + доставка - скидка на текущей странице
157          var TotalSum = parseInt($('.formfast-cart .TotalSum').data('total')) - parseInt($('input.startDiscount').attr('data-price'));
158    
159 
160          if (newTotalSumWithDisc >= TotalSum) {
161            $cuponInput.attr("placeholder", "Купон не применён");
162            $cuponInput.val("");
163            
164            $cuponInputDop.attr("placeholder", "Купон не применён");
165            $cuponInputDop.val("");
166          } else {
167            $cuponInput.attr("placeholder", "Введите купон");
168            
169            $cuponInputDop.attr("placeholder", "Введите купон");
170          }            
171          
172          // Получаем текущую стоимость выбранной доставки
173          var deliverySum = $('.formfast-cart .delivery-sum .price .num').text().replace(/\s/g, '');
174          // Считаем итоговую сумму заказа вместе с доставкой
175          var totalPriceWithDelivery = String(parseInt(deliverySum) + Math.floor(newTotalSumWithDisc));
176
177          // Обновляем значение
178          $('.formfast-cart .TotalSum').attr('data-total-sum', newTotalSumWithDisc);
179          $('.formfast-cart .TotalSum .num').text(addSpaces(String(totalPriceWithDelivery)));
180
181          // Считаем размер скидки и отображаем
182          var discountRub = parseInt(orderSumDefaul) - parseInt(newTotalSumWithDisc);
183
184          if(discountRub > 0) {
185            var startDiscountVal = $('input.startDiscount').attr('data-price');
186
187            if (discountRub > startDiscountVal){
188              $cartCoupon.css('display', 'flex');
189              $cartCouponCount.text(addSpaces(String(discountRub)));
190              
191              $saleBlockDop.css('display', 'flex');
192              $saleBlockDopCount.text(addSpaces(String(discountRub)));
193            }else{
194              $cartCoupon.hide();
195              $cartCouponCount.text('0');
196              
197              $saleBlockDop.hide();
198              $saleBlockDopCount.text('0');
199              $cuponInput.val("");
200              $cuponInputDop.val("");
201            }
202          } else {
203            $cartCoupon.hide();
204            $cartCouponCount.text('0');
205            $cuponInput.val("");
206            
207            $saleBlockDop.hide();
208            $saleBlockDopCount.text('0');
209            $cuponInputDop.val("");
210          }
211          
212          if (newTotalSumWithDisc >= TotalSum) {
213            $cartCoupon.hide();
214            $cartCouponCount.text('0');
215            $cuponInput.val("");
216            
217            $saleBlockDop.hide();
218            $saleBlockDopCount.text('0');
219            $cuponInputDop.val("");
220          }
221        },
222        error: function(data){
223              console.log("Возникла ошибка: Невозможно отправить форму купона.");
224        }
225        });
226    }
227  });
228
229	$resetBtn.on('click', function(){
230		$cuponInput.val('').trigger('input');
231		setTimeout(function(){
232			$totalCouponBlock.hide();
233			var cartSum = $('.cartSumDiscount').data('value');
234			var deliveryPrice = parseInt($('.formfast-cart .delivery-sum .price .num').html());
235			var newTotalSum = Math.floor(cartSum + deliveryPrice);
236			// Возвращаем значение по умолчанию итоговой стоимости
237			$('.formfast-cart .TotalSum').attr('data-total-sum', newTotalSum);
238			$('.formfast-cart .TotalSum .num').text(addSpaces(String(parseInt(newTotalSum))));
239		  // 	Если скидка изначально была
240			if($('input.startDiscount').attr('data-name') != ''){
241			  $totalCouponBlock.find('.title').html($('input.startDiscount').attr('data-name'));
242				$totalCouponBlock.find('.price .count').html($('input.startDiscount').attr('data-value') + $('input.startDiscount').attr('data-currency_name'));
243				$totalCouponBlock.find('.price .count').attr('data-value', $('input.startDiscount').attr('data-price'));
244			  $totalCouponBlock.show();
245			  
246			}else{
247			  $totalCouponBlock.hide();
248			}
249			$cuponInput.val("").attr("placeholder", "Введите купон").removeClass('focus');
250			$couponParent.removeClass('success');
251			$('.formfast .order_grid .couponBlockSale').removeClass('active');
252			$cartCouponInputPrice.val(0);
253			$cartCoupon.hide();
254      $cartCouponCount.text('0');
255      
256      $saleBlockDop.hide();
257      $saleBlockDopCount.text('0');
258      $cuponInputDop.val("").attr("placeholder", "Введите купон").removeClass('focus');
259		}, 500);
260	});
261
262	// Отображение кнопки Сброс
263	$cuponInput.on('input',function(){
264		var $input = $(this);
265    if($input.val()) {
266      $input.next('.coupon_clear').addClass('active');
267    } else {
268      $input.next('.coupon_clear').removeClass('active');
269    }
270	});
271	
272	// Сброс
273	$resetBtnDop.on('click', function(){
274	  $resetBtn.trigger('click');
275	})
276	
277	// Отображение кнопки Сброс
278	$cuponInputDop.on('input',function(){
279		var $input = $(this);
280    if($input.val()) {
281      $resetBtnDop.addClass('active');
282    } else {
283      $resetBtnDop.removeClass('active');
284    }
285	});
286}
287
288// Регистрация и выбор доставки
289function OrderScripts(){
290$(function(){
291  // Форма регистрации нового пользователя, при оформлении заказа
292  $('#OrderAjaxBlock .OrderShowPass').click(function(){
293    ChangePasswordFieldType(this, $('#contactPassWord'));
294    return false;
295  });
296  $('.order_right .openList-btn').on('click', function(){
297    if($(this).hasClass('active')){
298      $(this).closest('.order_right').find('.cart-products-list').slideUp();
299      $(this).removeClass('active');
300    }else{
301      $(this).closest('.order_right').find('.cart-products-list').slideDown();
302      $(this).addClass('active');
303    }
304  })
305  
306  $('.orderContainer .TotalSum').bind("DOMSubtreeModified", function(){
307    orderMinPrice();
308  })
309
310  // Маска
311  $.mask.definitions['h']='[12345679]';
312  $("#sites_client_phone").mask("+7 (h99)-999-9999");
313  
314  // При оформлении заказа дадим возможность зарегистрироваться пользователю
315  $('#contactWantRegister').click(function(){
316    if($(this).prop("checked")) {
317      $('.contactRegisterNeedElement').show();
318      $('#contactEmail, #contactPassWord').prop('required',true);
319    } else {
320      $('.contactRegisterNeedElement').hide();
321      $('#contactEmail, #contactPassWord').removeAttr('required');
322    }
323  });
324  
325  // При загрузке страницы. Клик по самому первому input
326  $(function(){
327    $('.order-delivery__items .order-delivery__item:first').addClass('is-active').find('input.order-delivery__radio:first').trigger('click');
328    
329    $('.order-delivery__items .order-delivery__item').each(function(){
330      var item = $(this);
331      var zone = item.find('.delivery__zones');
332      if (zone != "undefined"){
333        var price = zone.find('select option:first').attr('data-zone-price');
334        item.find('.order-delivery__price .num').text(price);
335      }
336    })
337  });
338  
339  // Действия при выборе варианта доставки на этапе оформления заказа
340  $('.order-delivery__items .order-delivery__radio').off('click').on('click', function (d) {
341    // Отображение вариантов оплаты при выборе доставки
342    var ID = $(this).val();
343    $('.order-payment').hide()
344    $('.order-payment[rel="' + ID + '"]').show();
345    $('.order-payment[rel="' + ID + '"]').find('input:first').click();
346
347    $('.order-delivery__radio').each(function () {
348      $(this).prop('checked', false)
349      $('.order-delivery__item').removeClass('is-active');
350    })
351    
352    $('.order-delivery__item[data-id="'+ID+'"] .order-delivery__radio').prop('checked', true);
353    // Делаем активным первыую зону
354    $('.order-delivery__items .order-delivery__item').each(function(){
355      var item = $(this);
356      var zone = item.find('.delivery__zones');
357      if (zone != "undefined"){
358        var price = zone.find('select option:first').attr('data-zone-price');
359        item.find('.order-delivery__price .num').text(price);
360        zone.find('select').val(zone.find('select option:first').val());
361      }
362    })
363    
364    $('.order-delivery__item[data-id="'+ID+'"]').addClass('is-active');
365
366    var price = $(this).attr('price');
367    var deliverySum = $('.order-delivery__item[data-id=' + ID + ']').find('.order-delivery__price').find('.num');
368    
369    // Обновление цены при наличии зоны
370    var cartSumTotal = $('.delivery-sum .price .num');
371    var zoneval = $('.order-delivery-zone__list select').val();
372    var zonePrice = $('.order-delivery-zone__list select option[deliveryid="'+ID+'"][value="'+zoneval+'"]').attr('data-zone-price');
373
374    if (zonePrice >= 0 && zonePrice != undefined) {
375      deliverySum.text(addSpaces(String(zonePrice)))
376      cartSumTotal.text(addSpaces(String(zonePrice)))
377    } else {
378      deliverySum.text(price)
379      cartSumTotal.text(addSpaces(String(price)))
380    }
381
382    // Обновление цены с учетом доставки
383    var cartSum = $('.formfast-cart .TotalSum').attr('data-total-sum');
384    var newSum = parseFloat(cartSum) + parseInt(deliverySum.text());
385
386    $('.formfast-cart .TotalSum .num').text(addSpaces(String(Math.round(newSum))));
387    
388    // Скрытие необязательных полей при выборе самовывоза
389    if ($(this).data('name') == 'Самовывоз') {
390      $('.order_left .adress').hide();
391      $('.address_show input, .comment textarea').val('Самовывоз');
392      $('#deliveryConvenientDate').val('01.01.2220');
393    } else {
394      $('.order_left .adress').show();
395      $('.address_show input, .comment textarea').val('');
396      $('#deliveryConvenientDate').val('');
397    }
398  })
399  
400  // Действия при выборе варианта доставки на этапе оформления заказа
401  $('.order-delivery__items .order-delivery-zone__list select').off('change').on('change', function (d) {
402    // Отображение вариантов оплаты при выборе доставки
403    var IDZone = $(this).val();
404    var ID = $(this).attr('del');
405    
406    $('.order-payment').hide()
407    $('.order-payment[rel="' + ID + '"]').show();
408    $('.order-payment[rel="' + ID + '"]').find('input:first').click();
409
410
411    var item = $('.order-delivery__items .order-delivery__item[data-id="'+ID+'"]');
412    if(!item.hasClass('is-active')){
413      // убираем все активности
414      $('.order-delivery__items .order-delivery__item').removeClass('is-active');
415      $('.order-delivery__items .order-delivery__item .order-delivery__radio').prop('checked', false);
416      
417      item.addClass('is-active');
418      $('.order-delivery__item[data-id="'+ID+'"] .order-delivery__radio').prop('checked', true);
419    }
420    
421    // Обновление цены при наличии зоны
422    var cartSumTotal = $('.delivery-sum .price .num');
423    var zonePrice = $('.order-delivery-zone__list select option[deliveryid="'+ID+'"][value="'+IDZone+'"]').attr('data-zone-price');
424    var deliverySum = $('.order-delivery__item[data-id=' + ID + ']').find('.order-delivery__price').find('.num');
425    
426    if (zonePrice >= 0 && zonePrice != undefined) {
427      deliverySum.text(addSpaces(String(zonePrice)))
428      cartSumTotal.text(addSpaces(String(zonePrice)))
429    } else {
430      deliverySum.text(price)
431      cartSumTotal.text(addSpaces(String(price)))
432    }
433
434    // Обновление цены с учетом доставки
435    var cartSum = $('.formfast-cart .TotalSum').attr('data-total-sum');
436    var newSum = parseFloat(cartSum) + parseInt(deliverySum.text());
437    
438    $('.formfast-cart .TotalSum .num').text(addSpaces(String(Math.round(newSum))));
439
440
441    // Скрытие необязательных полей при выборе самовывоза
442    if ($(this).data('name') == 'Самовывоз') {
443      $('.order_left .adress').hide();
444      $('.address_show input, .comment textarea').val('Самовывоз');
445      $('#deliveryConvenientDate').val('01.01.2220');
446    } else {
447      $('.order_left .adress').show();
448      $('.address_show input, .comment textarea').val('');
449      $('#deliveryConvenientDate').val('');
450    }
451  })
452  
453  // клик по навзанию для выбора доставки
454  $('.order-delivery__items .order-delivery__title').off('click').on('click', function(){
455    $(this).closest('.order-delivery__item .order-delivery__radio:first').trigger('click');
456  })
457  // клик по навзанию для выбора оплаты
458  $('.order-payment .order-payment__name').off('click').on('click', function(){
459    $(this).closest('.order-payment__item .order-payment__radio:first').trigger('click');
460  })
461  
462  // клик по навзанию для выбора оплаты
463  $('.order-payment .order-payment__radio').off('click').on('click', function(){
464    $('.order-payment').find('.order-payment__item').removeClass('is-active');
465    $(this).closest('.order-payment__item').addClass('is-active');
466  })
467
468  deliveryCalendar();
469});
470}
471
472function deliveryCalendar(){
473  // Выбор даты доставки
474  // Документация к плагину //t1m0n.name/air-datepicker/docs/index-ru.html
475  $(document).ready(function(){
476    $("#deliveryConvenientDate").datepicker({
477      // Если true, то при активации даты, календарь закроется.
478      autoClose: true,
479      // Можно выбрать только даты, идущие за сегодняшним днем, включая сегодня
480      minDate: new Date(),
481      inline:true,
482      showEvent: 'button', 
483      onSelect : function(dateText, inst){
484         $('.datepicker-inline').addClass('hide_');
485         $('#calendar_btn').removeClass('active')
486      }
487    })
488   var myDatepicker = $("#deliveryConvenientDate").datepicker();
489    $('.datepicker-inline').addClass('hide_');
490    $('#calendar_btn').on('click', function(){
491      if ($(this).hasClass('active')){
492        $(this).removeClass('active');
493        $('.datepicker-inline').addClass('hide_');
494      }else{
495        $(this).addClass('active');
496        $('.datepicker-inline').removeClass('hide_');
497      }
498      
499    })
500  })
501}
502
503// Разделение поле адрес на Улица, Дом, Квартира
504function address(){
505  $('#quickform .button').click(function(){
506    // Исключаем условие проверки для конкретной доставки
507    // Убрать комменты если доставка явл
507яется обязательной. required у Улица, Дом, Доставка уже убраны
508  
509    if ($('.mainSelect').val() != 000000 && $('.mainSelect').val() != 000000){
510        if ($('#quickDeliveryAddress').hasClass('required')){
511          if($('#quickDeliveryAddressStreet').val() =='' || $('#quickDeliveryAddressHome').val() =='' || $('#quickDeliveryAddressFlat').val() ==''){
512            alert('Пожалуйста заполните поля Улица, Дом, Квартира');
513            return false;
514          }
515        }
516        if($('#quickDeliveryAddressStreet').val() !='' || $('#quickDeliveryAddressHome').val() !='' || $('#quickDeliveryAddressFlat').val() !=''){
517          if ( $('#quickDeliveryAddress').val().match( /(.*)(улица)+(.*)/i ) ) {
518            $('#quickDeliveryAddress').val(null);
519          }
520          $('#quickDeliveryAddress').val('Улица: ' + $('#quickDeliveryAddressStreet').val() + ', Дом/Корпус: ' + $('#quickDeliveryAddressHome').val() + ', Квартира: ' + $('#quickDeliveryAddressFlat').val());
521          $('#quickform').submit();
522          return false;
523        }
524    }
525  });
526}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.