Нажав на представленное ниже изображение кухни, Вы можете посмотреть, как данные системы фасадов для
мебели могут использоваться в изготовлении кухонных гарнитуров
// Конфигурация reCAPTCHA
const SITE_KEY = '6LfAhvgrAAAAAC7CMWC6A0zyR5RJ2TPpHszyajFy';
// Используем переменные для действий чтобы избежать конфликта с Smarty
var actionRequest = 'request';
var actionSubmit = 'submit';
document.addEventListener('DOMContentLoaded', function() {
var form = document.getElementById('request-form');
var submitBtn = document.getElementById('request_submit');
var modal = document.getElementById('request');
if (!form) return;
// Инициализация reCAPTCHA при открытии модального окна
if (modal) {
modal.addEventListener('show.bs.modal', function() {
// Сброс формы
form.reset();
var messageDiv = document.getElementById('request-form-messages');
if (messageDiv) messageDiv.style.display = 'none';
});
modal.addEventListener('shown.bs.modal', function() {
// Генерируем токен reCAPTCHA при открытии
if (typeof grecaptcha !== 'undefined') {
grecaptcha.ready(function() {
// Создаем объект для действия чтобы избежать фигурных скобок
var actionObj = {};
actionObj.action = actionRequest;
grecaptcha.execute(SITE_KEY, actionObj).then(function(token) {
document.getElementById('recaptchaResponse').value = token;
});
});
}
});
}
// Обработка отправки формы
form.addEventListener('submit', function(e) {
e.preventDefault();
console.log('Начало отправки формы с reCAPTCHA');
// Проверка honeypot поля
var honeypot = form.querySelector('input[name="website"]');
if (honeypot.value !== '') {
showMessage('Обнаружена подозрительная активность.', 'error');
return;
}
// Валидация email
var email = document.getElementById('request_email').value;
if (!isValidEmail(email)) {
showMessage('Пожалуйста, введите корректный email адрес.', 'error');
document.getElementById('request_email').focus();
return;
}
// Проверка телефона
var phone = document.getElementById('request_phone_input').value;
if (!phone.trim()) {
showMessage('Пожалуйста, введите телефон.', 'error');
document.getElementById('request_phone_input').focus();
return;
}
// Блокировка кнопки отправки
submitBtn.disabled = true;
submitBtn.textContent = 'Отправка...';
submitBtn.setAttribute('aria-label', 'Идет отправка формы...');
// Обновление токена reCAPTCHA и отправка формы
if (typeof grecaptcha !== 'undefined') {
grecaptcha.ready(function() {
// Создаем объект для действия чтобы избежать фигурных скобок
var actionObj = {};
actionObj.action = actionSubmit;
grecaptcha.execute(SITE_KEY, actionObj).then(function(token) {
document.getElementById('recaptchaResponse').value = token;
// Сбор данных формы
var formData = new FormData(form);
console.log('Отправка запроса с reCAPTCHA токеном');
// Отправка данных на сервер
fetch('/assets/components/callback/action_request.php', {
method: 'POST',
body: formData
})
.then(function(response) {
console.log('Статус ответа:', response.status);
return response.json();
})
.then(function(data) {
console.log('Ответ сервера:', data);
if (data.success) {
showMessage('✅ Форма успешно отправлена! Мы свяжемся с вами в ближайшее время.', 'success');
form.reset();
// Закрываем модальное окно через 3 секунды
setTimeout(function() {
closeModal();
}, 3000);
} else {
showMessage('❌ ' + data.message, 'error');
console.log('Детали ошибки:', data.debug);
}
})
.catch(function(error) {
console.error('Ошибка сети:', error);
showMessage('Ошибка сети. Пожалуйста, проверьте соединение и попробуйте снова.', 'error');
})
.finally(function() {
submitBtn.disabled = false;
submitBtn.textContent = 'Отправить';
submitBtn.setAttribute('aria-label', 'Отправить форму');
});
}).catch(function(recaptchaError) {
console.error('Ошибка reCAPTCHA:', recaptchaError);
showMessage('Ошибка системы безопасности. Пожалуйста, обновите страницу.', 'error');
submitBtn.disabled = false;
submitBtn.textContent = 'Отправить';
submitBtn.setAttribute('aria-label', 'Отправить форму');
});
});
} else {
showMessage('Ошибка загрузки системы безопасности.', 'error');
submitBtn.disabled = false;
submitBtn.textContent = 'Отправить';
submitBtn.setAttribute('aria-label', 'Отправить форму');
}
});
// Функция для закрытия модального окна
function closeModal() {
var modal = document.getElementById('request');
if (modal) {
// Способ 1: Через Bootstrap
if (typeof bootstrap !== 'undefined') {
var bsModal = bootstrap.Modal.getInstance(modal);
if (bsModal) {
bsModal.hide();
return;
}
}
// Способ 2: Через jQuery
if (typeof $ !== 'undefined' && $.fn.modal) {
$(modal).modal('hide');
return;
}
// Способ 3: Прямое скрытие
modal.style.display = 'none';
document.body.classList.remove('modal-open');
// Убираем backdrop
var backdrops = document.querySelectorAll('.modal-backdrop');
backdrops.forEach(function(backdrop) {
backdrop.remove();
});
}
}
// Функция для показа сообщений
function showMessage(message, type) {
var messageDiv = document.getElementById('request-form-messages');
if (messageDiv) {
messageDiv.textContent = message;
messageDiv.className = 'form-messages alert alert-' + type;
messageDiv.style.display = 'block';
messageDiv.setAttribute('role', 'alert');
// Автоскрытие для ошибок через 5 секунд
if (type === 'error') {
setTimeout(function() {
messageDiv.style.display = 'none';
}, 5000);
}
} else {
console.log('Сообщение:', message);
}
}
// Функция валидации email
function isValidEmail(email) {
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
});
НАПИСАТЬ ПИСЬМО
Сообщить об ошибке
Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с
сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего
браузера.
Что такое cookie