first
This commit is contained in:
63
static/js/main.js
Normal file
63
static/js/main.js
Normal file
@@ -0,0 +1,63 @@
|
||||
// Обработка формы регистрации
|
||||
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' });
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user