PageSourceSearch

https://www.major-dongfeng.ru/wp-content/plugins/Primo.Forms/assets/js/pf-main.js?ver=1.4

js major-dongfeng.ru collected 2026-10-08 09:07:30 UTC 5,411 bytes, 160 lines download raw bytes

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.