| common/consultation-form/consultation-form__new.htm | common/our-works/our-works.htm |
<button class="button button--accent header__button js-open-popup-main-consult" data-title="Консультация по Алмазной резке в Москве"> Получить консультацию </button>
<script> document.querySelectorAll('.js-open-popup-main-consult').forEach(function(btn) { btn.addEventListener('click', function() { var popup = document.getElementById('main-consultation-popup'); // берём из data-title var title = this.getAttribute('data-title') || 'Получить консультацию'; document.getElementById('main-consultation-subject').value = title; document.getElementById('main-consultation-source').value = window.location.href; popup.style.display = 'flex'; }); }); // закрытие по крестику var worksPopup = document.getElementById( 'main-consultation-popup' ); var worksClose = document.getElementById( 'main-consultation-close' ); worksClose.addEventListener('click', function() { worksPopup.style.display = 'none'; }); // закрытие по клику на фон worksPopup.addEventListener('click', function(e) { if (e.target === worksPopup) { worksPopup.style.display = 'none'; } }); </script> | <button class="button button--simple our-works__button js-open-popup-work-consult" data-title="Консультация по работам"> Получить консультацию </button>
< <script> document.querySelectorAll('.js-open-popup-work-consult').forEach(function(btn) { btn.addEventListener('click', function() { var popup = document.getElementById('works-consultation-popup'); // берём из data-title var title = this.getAttribute('data-title') || 'Получить консультацию'; document.getElementById('works-consultation-subject').value = title; document.getElementById('works-consultation-source').value = window.location.href; popup.style.display = 'flex'; }); }); // закрытие по крестику var worksPopup = document.getElementById( 'works-consultation-popup' ); var worksClose = document.getElementById( 'works-consultation-close' ); worksClose.addEventListener('click', function() { worksPopup.style.display = 'none'; }); // закрытие по клику на фон worksPopup.addEventListener('click', function(e) { if (e.target === worksPopup) { worksPopup.style.display = 'none'; } }); </script> |
<script> document.addEventListener('DOMContentLoaded', function () { // Запускаем после того как app.js успеет отработать setTimeout(function () { document.querySelectorAll('.works-js-phone-mask').forEach(function (input) { var im = input.inputmask; if (!im) return; var opts = im.opts; // Замораживаем нужные опции — любые попытки перезаписи молча игнорируются ['clearIncomplete', 'clearMaskOnLostFocus'].forEach(function (key) { Object.defineProperty(opts, key, { get: function () { return false; }, set: function () { /* заглушка — app.js думает что записал, но нет */ }, configurable: false, enumerable: true }); }); function getErrorElement(input) { var existing = input.parentNode.querySelector( '.consultation-form__error' ); if (existing) return existing; var error = document.createElement('div'); error.className = 'consultation-form__error'; input.parentNode.appendChild(error); return error; } // Вешаем свои обработчики поверх opts.onincomplete = function () { var error = getErrorElement(input); input.setCustomValidity( '📱 Введите номер телефона полностью' ); error.textContent = '📱 Введите номер телефона полностью'; error.classList.add('is-visible'); }; opts.oncomplete = function () { var error = getErrorElement(input); input.setCustomValidity(''); error.classList.remove('is-visible'); }; opts.oncleared = function () { var error = getErrorElement(input); input.setCustomValidity(''); error.classList.remove('is-visible'); }; }); }, 0); // setTimeout(0) — уходим в конец очереди текущего event loop }); </script> | <script> document.addEventListener('DOMContentLoaded', function () { // Запускаем после того как app.js успеет отработать setTimeout(function () { document.querySelectorAll('.works-js-phone-mask').forEach(function (input) { var im = input.inputmask; if (!im) return; var opts = im.opts; // Замораживаем нужные опции — любые попытки перезаписи молча игнорируются ['clearIncomplete', 'clearMaskOnLostFocus'].forEach(function (key) { Object.defineProperty(opts, key, { get: function () { return false; }, set: function () { /* заглушка — app.js думает что записал, но нет */ }, configurable: false, enumerable: true }); }); function getErrorElement(input) { var existing = input.parentNode.querySelector( '.consultation-form__error' ); if (existing) return existing; var error = document.createElement('div'); error.className = 'consultation-form__error'; input.parentNode.appendChild(error); return error; } // Вешаем свои обработчики поверх opts.onincomplete = function () { var error = getErrorElement(input); input.setCustomValidity( '📱 Введите номер телефона полностью' ); error.textContent = '📱 Введите номер телефона полностью'; error.classList.add('is-visible'); }; opts.oncomplete = function () { var error = getErrorElement(input); input.setCustomValidity(''); error.classList.remove('is-visible'); }; opts.oncleared = function () { var error = getErrorElement(input); input.setCustomValidity(''); error.classList.remove('is-visible'); }; }); }, 0); // setTimeout(0) — уходим в конец очереди текущего event loop }); </script> |