116 lines
4.0 KiB
JavaScript
116 lines
4.0 KiB
JavaScript
/*
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
const header = document.getElementById('site-header');
|
||
const main = document.getElementById('main-content');
|
||
|
||
function updateMainPadding() {
|
||
const headerHeight = header.offsetHeight;
|
||
main.style.paddingTop = headerHeight + 'px';
|
||
|
||
// Показываем контент с плавной анимацией
|
||
main.classList.remove('opacity-0');
|
||
}
|
||
|
||
updateMainPadding();
|
||
window.addEventListener('resize', updateMainPadding);
|
||
});*/
|
||
|
||
// Используем делегирование событий для динамически загружаемых форм
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
|
||
// Делегирование для focus события
|
||
document.addEventListener('focus', function(e) {
|
||
if (e.target.matches('#fluentform_4 .ff-el-form-control')) {
|
||
const group = e.target.closest('.ff-el-group');
|
||
if (group) group.classList.add('focused');
|
||
}
|
||
}, true); // используем capture phase
|
||
|
||
// Делегирование для blur события
|
||
document.addEventListener('blur', function(e) {
|
||
if (e.target.matches('#fluentform_4 .ff-el-form-control')) {
|
||
const group = e.target.closest('.ff-el-group');
|
||
if (group) group.classList.remove('focused');
|
||
}
|
||
}, true);
|
||
|
||
// Делегирование для input события
|
||
document.addEventListener('input', function(e) {
|
||
// Обычные поля формы
|
||
if (e.target.matches('#fluentform_4 .ff-el-form-control')) {
|
||
const group = e.target.closest('.ff-el-group');
|
||
if (group) {
|
||
if (e.target.value.trim() !== '') {
|
||
group.classList.add('has-value');
|
||
} else {
|
||
group.classList.remove('has-value');
|
||
}
|
||
}
|
||
}
|
||
|
||
// Форматирование телефона
|
||
if (e.target.matches('#fluentform_4 .ff-el-phone')) {
|
||
formatPhoneNumber(e);
|
||
}
|
||
});
|
||
|
||
// Делегирование для keydown события (для телефона)
|
||
document.addEventListener('keydown', function(e) {
|
||
if (e.target.matches('#fluentform_4 .ff-el-phone')) {
|
||
handlePhoneKeydown(e);
|
||
}
|
||
});
|
||
|
||
// Функция форматирования телефона
|
||
function formatPhoneNumber(e) {
|
||
let value = e.target.value.replace(/\D/g, '');
|
||
|
||
// Заменяем 8 на 7
|
||
if (value.startsWith('8')) {
|
||
value = '7' + value.slice(1);
|
||
}
|
||
|
||
// Добавляем 7 если нет
|
||
if (!value.startsWith('7') && value.length > 0) {
|
||
value = '7' + value;
|
||
}
|
||
|
||
let formattedValue = '';
|
||
|
||
if (value.length > 0) {
|
||
formattedValue = '+7';
|
||
|
||
if (value.length > 1) {
|
||
formattedValue += ' (' + value.slice(1, 4);
|
||
|
||
if (value.length > 4) {
|
||
formattedValue += ') ' + value.slice(4, 7);
|
||
|
||
if (value.length > 7) {
|
||
formattedValue += '-' + value.slice(7, 9);
|
||
|
||
if (value.length > 9) {
|
||
formattedValue += '-' + value.slice(9, 11);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
e.target.value = formattedValue;
|
||
}
|
||
|
||
// Функция обработки клавиш для телефона
|
||
function handlePhoneKeydown(e) {
|
||
if (e.key === 'Backspace' || e.key === 'Delete') {
|
||
const cursorPos = e.target.selectionStart;
|
||
const value = e.target.value;
|
||
|
||
if (cursorPos > 0 && [' ', '(', ')', '-'].includes(value[cursorPos - 1])) {
|
||
setTimeout(() => {
|
||
e.target.setSelectionRange(cursorPos - 1, cursorPos - 1);
|
||
}, 0);
|
||
}
|
||
}
|
||
}
|
||
}); |