From 1534181e71c66e20f126c93865c1f3b407e76ff3 Mon Sep 17 00:00:00 2001 From: "MH.Dmitrii" Date: Sun, 10 May 2026 17:24:32 +0300 Subject: [PATCH] error handling --- server/frontend/main/api.js | 44 +++++++++++++++++++++++++++++++-- server/frontend/main/index.html | 4 +-- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/server/frontend/main/api.js b/server/frontend/main/api.js index e85418f..fc8edc9 100644 --- a/server/frontend/main/api.js +++ b/server/frontend/main/api.js @@ -49,7 +49,47 @@ document.addEventListener("DOMContentLoaded", () => { } catch (err) { console.error(err); - alert('Ошибка: ' + err.message); + showErrors(err.message); } }); -}); \ No newline at end of file +}); + +const fieldMap = { + 'name': 'ffname', + 'middlename': 'fmname', + 'surname': 'flname' + }; + + function showErrors(errors) { + let errorElements = document.querySelectorAll(".formError") + if (errorElements.length === 0) { + document.querySelectorAll('.label_style').forEach(el => { + const errorElem = document.createElement('div'); + errorElem.className = 'formError'; + errorElem.style.cssText = ` + color: red; + margin-top: 10px; + margin-bottom: 10px; + font-size: 14px; + font-weight: 100; + line-height: 120%; + transition: 3s; + `; + el.after(errorElem); + }); + } + errors.forEach(error => { + const fieldName = error.loc[1]; // 'name', 'middlename', 'surname' + const inputId = fieldMap[fieldName]; + if (!inputId) return; + + const input = document.getElementById(inputId); + if (!input) return; + const label = input.closest('.label_style'); + if (label && label.nextElementSibling?.classList.contains('formError')) { + label.nextElementSibling.textContent = error.msg; + } + }); + } + + diff --git a/server/frontend/main/index.html b/server/frontend/main/index.html index e91edec..d7cd1ac 100644 --- a/server/frontend/main/index.html +++ b/server/frontend/main/index.html @@ -442,7 +442,7 @@ - +

text

@@ -468,7 +468,7 @@