Click to order
Total: 
Имя
Ваш телефон
Нужен ли приборы
$(document).ready(() => { $("[name='address2']").attr('id', 'address2'); $("[name='address2']").prepend('
'); $('[class$="__product-full js-product"]').find('[class$="__btn t-btn t-btn_sm"]').find('td').text('В корзину'); $(document).on("keydown", "form", function(event) { return event.key != "Enter"; }); }); ymaps.ready(init2); function init2() { var suggestView = new ymaps.SuggestView('address2',{ boundedBy: [[30.005103, 60.056371], [30.960913, 59.777802]] }); function onZonesLoad2(json) { var sumForFreeDelivery = 0; var myMap = new ymaps.Map('map2', { center: [30.347870,59.930829], zoom: 12 }) // Добавляем зоны на карту. var deliveryZones = ymaps.geoQuery(json).addToMap(myMap); // Задаём цвет и контент балунов полигонов. deliveryZones.each(function (obj,index) { obj.options.set({ fillColor: obj.properties.get('fill'), fillOpacity: obj.properties.get('fill-opacity'), strokeColor: obj.properties.get('stroke'), strokeWidth: obj.properties.get('stroke-width'), strokeOpacity: obj.properties.get('stroke-opacity') }); obj.properties.set('balloonContent', obj.properties.get('description')); obj.properties.set('index',index); }); suggestView.events.add('select', function(item){ console.log('suggestView select event triggered'); selecteEvent(item.originalEvent.item.value); }); $('body').on('DOMSubtreeModified' ,'[class$="__cartwin-products"]' ,function(){ selecteEvent($("[name='address2']").val())} ); function selecteEvent(value){ ymaps.geocode(value).then(function (res) { var obj = res.geoObjects.get(0), hint; if (obj) { // Об оценке точности ответа геокодера можно прочитать тут: https://tech.yandex.ru/maps/doc/geocoder/desc/reference/precision-docpage/ switch (obj.properties.get('metaDataProperty.GeocoderMetaData.precision')) { case 'exact': break; case 'number': case 'near': case 'range': case 'street': hint = 'Уточните номер дома'; break; case 'other': default: hint = 'Уточните адрес'; } } else { // error = 'Адрес не найден'; hint = 'Уточните адрес'; } // Если геокодер возвращает пустой массив или неточный результат, то показываем ошибку. if (hint) { selectedShowError(hint); } else { selected(obj); } }, function (e) { console.log(e) }) } function selected(obj) { console.log('Start selected'); $("[name='address2']").siblings('.t-input-error').css('display', 'none'); // Сохраняем координаты переданного объекта. var coords = obj.geometry.getCoordinates(), // Находим полигон, в который входят переданные координаты. polygon = deliveryZones.searchContaining(coords).get(0); console.log(polygon); if (polygon) { console.log('Polygon found'); var index = polygon.properties.get('index'); var freeDelivery = calculateFreeDelivery(index); $('#sumForFreeDelivery').remove(); if(freeDelivery){ index = $("[name='delivery']").length -2 ; }else{ if(sumForFreeDelivery >0){ $('.t-form__errorbox-middle') .after('
До бесплатной доставки осталось '+ sumForFreeDelivery +'руб, возьмете еще что-нибудь вкусненькое?
'); } } showDeliveryOptions(index); $("[name='delivery']")[index].click(); } else { console.log('Polygon not found'); showDeliveryOptions(null); // $("[name='delivery']").attr('disabled', false); $("[name='delivery']").last().click(); // $("[name='delivery']").attr('disabled', true); } } function selectedShowError(message) { $("[name='address2']").siblings('.t-input-error').text(message); $("[name='address2']").siblings('.t-input-error').css('display', 'block'); } function showDeliveryOptions(index){ $("[name='delivery']").parent().hide(); if(index!==null){ $($("[name='delivery']").parent()[index]).show(); } $("[name='delivery']").parent().last().show(); } function calculateFreeDelivery(index){ var str = $('[class$="__cartwin-prodamount"]').text() var subtotal = parseInt(str.substring(0,str.length-3).replace(' ','')); var deliveryPrice = parseInt($("[name='delivery']:eq("+index+")").data('deliveryPrice')); var free = false; var logic = [ {fromDeliveryPrice:0,toDeliveryPrice:200,minSubtotal:800}, {fromDeliveryPrice:200,toDeliveryPrice:400,minSubtotal:1500}, {fromDeliveryPrice:400,toDeliveryPrice:9999999,minSubtotal:1500} ] for(var i in logic){ if(deliveryPrice >= logic[i].fromDeliveryPrice && deliveryPrice < logic[i].toDeliveryPrice ){ sumForFreeDelivery = logic[i].minSubtotal-subtotal; } if(deliveryPrice >= logic[i].fromDeliveryPrice && deliveryPrice < logic[i].toDeliveryPrice && subtotal >= logic[i].minSubtotal){ free=true; sumForFreeDelivery=0; break; } } return free; } } onZonesLoad2(geoInformation); }
Made on
Tilda