1import { createModalCallBack, createModalSuccess, showModal } from "./modal.js?v=1.2"; 2import { call_ajax_calltouch, call_ajax_form_tracker, call_ajax_ma } from "./ajax-functions.js"; 3 4document.addEventListener("DOMContentLoaded", function () { 5// иниÑиализаÑÐ¸Ñ Ð¼Ð¾Ð´Ð°Ð»Ñного окна (ÑÑнкÑÐ¸Ñ ÑÐ¾Ñ Ñанена в глобалÑном конÑекÑÑе) 6window.initPrimoModal = function initModal( 7 title, 8 subtitle, 9 salon_list, 10 use_ma_api 11) { 12 createModalCallBack(title, subtitle, salon_list); 13 showModal(); 14 15 const modalForm = $("#main-modal form"); 16 17 modalForm.find("#call-back-number-modal").inputmask("+7 (999) 999-99-99"); 18 19 removeErrorOnInputChange(modalForm); 20 21 modalForm.on("submit", function (e) { 22 e.preventDefault(); 23 24 if (!validateForm(modalForm)) return; 25 26 const formData = { 27 name: modalForm.find("#call-back-name").val(), 28 phone: modalForm.find("#call-back-number-modal").val(), 29 salon_key: modalForm.find("#call-back-salon-modal").length 30 ? modalForm.find("#call-back-salon-modal").val() 31 : null, 32 salon_name: modalForm.find("#call-back-salon-modal option:selected") 33 .length 34 ? modalForm.find("#call-back-salon-modal option:selected").text() 35 : null, 36 source: "modal", 37 }; 38 39 if (use_ma_api) { 40 call_ajax_ma(formData); // Ñлем лид в MA 41 } else { 42 call_ajax_calltouch(formData); // Ñлем лид в колÑÐ°Ñ 43 } 44 45 // ÑÐ¾Ñ ÑанÑем лид Ñебе 46 call_ajax_form_tracker(formData); 47 48 createModalSuccess(formData); 49 showModal(); 50 }); 51}; 52 53// иниÑиализаÑÐ¸Ñ ÑоÑÐ¼Ñ (ÑÑнкÑÐ¸Ñ ÑÐ¾Ñ Ñанена в глобалÑном конÑекÑÑе) 54window.initPrimoForm = function initForm(use_ma_api) { 55 const footerForm = $(".call-back form"); 56 57 const phoneInput = footerForm.find("#call-back-number"); 58 59 // ÐниÑиализаÑÐ¸Ñ Inputmask 60 phoneInput.inputmask({ 61 mask: "+7 (999) 999-99-99", 62 showMaskOnHover: false, 63 }); 64 65 removeErrorOnInputChange(footerForm); 66 67 // валидаÑÐ¸Ñ Ð¸ обÑабоÑка оÑпÑавки заÑвки 68 footerForm.on("submit", function (e) { 69 e.preventDefault(); 70 71 if (!validateForm(footerForm)) return; 72 73 const formData = { 74 name: footerForm.find("#call-back-name").val(), 75 phone: footerForm.find("#call-back-number").val(), 76 salon_key: footerForm.find("#call-back-select").length 77 ? footerForm.find("#call-back-select").val() 78 : null, 79 salon_name: footerForm.find("#call-back-select option:selected").length 80 ? footerForm.find("#call-back-select option:selected").text() 81 : null, 82 source: "form", 83 }; 84 85 if (use_ma_api) { 86 call_ajax_ma(formData); // Ñлем лид в MA 87 } else { 88 call_ajax_calltouch(formData); // Ñлем лид в колÑÐ°Ñ 89 } 90 91 // ÑÐ¾Ñ ÑанÑем лид Ñебе 92 call_ajax_form_tracker(formData); 93 94 // показÑваем окно ÑÑÐ¿ÐµÑ Ð° 95 createModalSuccess(formData); 96 showModal(); 97 }); 98}; 99 100// ÐалидаÑÐ¸Ñ ÑоÑм 101function validateForm(form) { 102 // const nameInput = form.find("input[type='text']"); 103 const phoneInput = form.find("input[type='tel']"); 104 const cookiesCheckbox = form.find(".cookies-checkbox"); 105 const policyCheckbox = form.find(".policy-checkbox"); 106 107 let isValid = true; 108 109 if (!phoneInput.inputmask("isComplete")) { 110 phoneInput.addClass("input-error"); 111 isValid = false; 112 } else { 113 phoneInput.removeClass("input-error"); 114 } 115 116 if (!cookiesCheckbox.is(":checked")) { 117 cookiesCheckbox.addClass("checkbox-error"); 118 isValid = false; 119 } else { 120 cookiesCheckbox.removeClass("checkbox-error"); 121 } 122 123 if (!policyCheckbox.is(":checked")) { 124 policyCheckbox.addClass("checkbox-error"); 125 isValid = false; 126 } else { 127 policyCheckbox.removeClass("checkbox-error"); 128 } 129 130 return isValid; 131} 132 133// изменение ÑвеÑа ÑелекÑоÑа в модалке пÑи вÑбоÑе Ñалона на ÑеÑнÑй 134$(document).on( 135 "change", 136 "#call-back-select, #call-back-salon-modal", 137 function () { 138 const selectedText = $(this).find("option:selected").text(); 139 140 if (selectedText !== "ÐÑбеÑиÑе дилеÑÑкий ÑенÑÑ") { 141 $(this).addClass("selected-salon"); 142 } else { 143 $(this).removeClass("selected-salon"); 144 } 145 } 146); 147 148// ÐÑи изменении инпÑÑов в ÑоÑме ÑбоÑа заÑвки Ñ Ð½Ð¸Ñ ÑнимаеÑÑÑ ÐºÐ»Ð°ÑÑ Ð¾Ñибки 149function removeErrorOnInputChange(form) { 150 form.find("input[type='checkbox']").change(function () { 151 if ($(this).is(":checked")) { 152 $(this).removeClass("checkbox-error"); 153 } 154 });
155 156 form.find("input[type='tel']").on("input", function () { 157 $(this).removeClass("input-error"); 158 }); 159} 160});
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.