63 lines
2.2 KiB
JavaScript
63 lines
2.2 KiB
JavaScript
// Обработка формы регистрации
|
|
const form = document.getElementById('registrationForm');
|
|
const feedbackDiv = document.getElementById('formFeedback');
|
|
|
|
if (form) {
|
|
form.addEventListener('submit', async function(e) {
|
|
e.preventDefault();
|
|
|
|
if (feedbackDiv) {
|
|
feedbackDiv.innerHTML = '';
|
|
feedbackDiv.className = 'form-message';
|
|
}
|
|
|
|
const formData = new FormData(form);
|
|
const submitBtn = form.querySelector('button[type="submit"]');
|
|
const originalText = submitBtn.innerHTML;
|
|
|
|
submitBtn.disabled = true;
|
|
submitBtn.innerHTML = '<i class="fas fa-spinner fa-pulse"></i> Отправка...';
|
|
|
|
try {
|
|
const response = await fetch('/api/register', {
|
|
method: 'POST',
|
|
body: formData
|
|
});
|
|
const data = await response.json();
|
|
|
|
if (feedbackDiv) {
|
|
if (data.success) {
|
|
feedbackDiv.innerHTML = '<div class="success-msg">✅ ' + data.message + '</div>';
|
|
form.reset();
|
|
} else {
|
|
feedbackDiv.innerHTML = '<div class="error-msg">❌ ' + data.message + '</div>';
|
|
}
|
|
}
|
|
} catch (err) {
|
|
console.error('Error:', err);
|
|
if (feedbackDiv) {
|
|
feedbackDiv.innerHTML = '<div class="error-msg">❌ Ошибка соединения. Попробуйте позже.</div>';
|
|
}
|
|
} finally {
|
|
submitBtn.disabled = false;
|
|
submitBtn.innerHTML = originalText;
|
|
|
|
setTimeout(() => {
|
|
if (feedbackDiv) feedbackDiv.innerHTML = '';
|
|
}, 5000);
|
|
}
|
|
});
|
|
}
|
|
|
|
// Плавная прокрутка для якорных ссылок
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
anchor.addEventListener('click', function(e) {
|
|
const hash = this.getAttribute('href');
|
|
if (hash === '#') return;
|
|
const target = document.querySelector(hash);
|
|
if (target) {
|
|
e.preventDefault();
|
|
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
|
}
|
|
});
|
|
}); |