52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
var form = document.getElementById("regForm");
|
||
var msg = document.getElementById("formMsg");
|
||
var btn = document.getElementById("submitBtn");
|
||
|
||
form.addEventListener("submit", async function (e) {
|
||
e.preventDefault();
|
||
msg.hidden = true;
|
||
msg.className = "form-msg";
|
||
|
||
var data = {
|
||
fio: form.fio.value.trim(),
|
||
email: form.email.value.trim(),
|
||
phone: form.phone.value.trim(),
|
||
city: form.city.value.trim(),
|
||
track: form.track.value,
|
||
role: form.role.value,
|
||
team: form.team.value.trim(),
|
||
experience: form.experience.value.trim()
|
||
};
|
||
|
||
if (!data.fio || !data.email || !data.phone || !data.city || !data.track || !data.role || !data.experience) {
|
||
msg.textContent = "Пожалуйста, заполни все обязательные поля.";
|
||
msg.classList.add("err");
|
||
msg.hidden = false;
|
||
return;
|
||
}
|
||
|
||
btn.disabled = true;
|
||
btn.textContent = "Отправляем…";
|
||
|
||
try {
|
||
var resp = await fetch("api/register", {
|
||
method: "POST",
|
||
headers: { "Content-Type": "application/json" },
|
||
body: JSON.stringify(data)
|
||
});
|
||
var result = await resp.json();
|
||
if (!resp.ok || !result.ok) throw new Error(result.error || "Ошибка сервера");
|
||
msg.textContent = "✅ Заявка отправлена! Мы пришлём приглашение на " + data.email + ".";
|
||
msg.classList.add("ok");
|
||
msg.hidden = false;
|
||
form.reset();
|
||
} catch (err) {
|
||
msg.textContent = "Не удалось отправить заявку: " + err.message + ". Попробуй ещё раз.";
|
||
msg.classList.add("err");
|
||
msg.hidden = false;
|
||
} finally {
|
||
btn.disabled = false;
|
||
btn.textContent = "Отправить заявку";
|
||
}
|
||
});
|