From d984d8314944620267b4bd0a343fc543b9a2b090 Mon Sep 17 00:00:00 2001 From: Ilya_Chis Date: Mon, 25 Nov 2024 11:01:57 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=8F=D1=87=D0=B5=D0=B9=D0=BA=D0=B8=20=D0=A4?= =?UTF-8?q?=D0=98=D0=9E,=20=D0=90=D0=B4=D1=80=D0=B5=D1=81=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D0=B8,=20?= =?UTF-8?q?=D0=90=D0=B4=D1=80=D0=B5=D1=81=20=D0=BF=D1=80=D0=BE=D0=B6=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webApp/templates/2.0/main_page.pug | 18 +++-- webApp/templates/static/js/2.0.dashboard.js | 83 +++++++++++++++++---- 2 files changed, 81 insertions(+), 20 deletions(-) diff --git a/webApp/templates/2.0/main_page.pug b/webApp/templates/2.0/main_page.pug index 2ea11a7..ce0118e 100644 --- a/webApp/templates/2.0/main_page.pug +++ b/webApp/templates/2.0/main_page.pug @@ -22,9 +22,10 @@ script(type="text/javascript", src="/js/2.0.dashboard.js?q="~randomString()) - .my-3.mx-4 - label.form-label.m-0(for="fio")='Фамилия Имя Отчество' + .my-3.mx-4.success-field + label.form-label.m-0(for="fio")='Фамилия Имя Отчество полностью' input.form-control.tg_input#fio + small="(Пожалуйста, проверьте формат ввода)" .my-3.mx-4.success-field label.form-label.m-0(for="tel")="Телефон" .row.m-0.p-0.justify-content-between @@ -54,16 +55,19 @@ script(type="text/javascript", src="/js/2.0.dashboard.js?q="~randomString()) label.form-label.m-0(for="postal_code")='Код подразделения' input.form-control.tg_input#postal_code small="(Пожалуйста, проверьте формат ввода)" - .my-3.mx-4 + .my-3.mx-4.success-field label.form-label.m-0(for="passport_issued_by")='Кем выдан паспорт' select.form-select.tg_input#passport_issued_by(style="") option(disabled, selected)="Кем выдан паспорт" - .my-3.mx-4 - label.form-label.m-0(for="address")='Адрес регистрации' + small="(Пожалуйста, проверьте формат ввода)" + .my-3.mx-4.success-field + label.form-label.m-0(for="address")='Адрес регистрации в формате: РЕГИОН, НАСЕЛЕННЫЙ ПУНКТ, УЛИЦА, ДОМ, КВАРТИРА' input.form-control.tg_input#address - .my-3.mx-4 - label.form-label.m-0(for="residential_address")='Адрес проживания' + small="(Пожалуйста, проверьте формат ввода)" + .my-3.mx-4.success-field + label.form-label.m-0(for="residential_address")='Адрес проживания в формате: РЕГИОН, НАСЕЛЕННЫЙ ПУНКТ, УЛИЦА, ДОМ, КВАРТИРА' input.form-control.tg_input#residential_address + small="(Пожалуйста, проверьте формат ввода)" .my-3.mx-4.success-field label.form-label.m-0(for="snils")='СНИЛС' input.form-control.tg_input#snils diff --git a/webApp/templates/static/js/2.0.dashboard.js b/webApp/templates/static/js/2.0.dashboard.js index d893cb7..c07b221 100644 --- a/webApp/templates/static/js/2.0.dashboard.js +++ b/webApp/templates/static/js/2.0.dashboard.js @@ -43,22 +43,34 @@ $(document).ready(function(){ $('body').append(''); $('body').append(''); - $('#fio').on('input', function() { + + $('#fio').on('input', function () { let input = $(this).val(); + + // Убираем все лишние символы, кроме букв и пробелов input = input.replace(/[^a-zA-Zа-яА-ЯёЁ ]/g, ''); - // Разделение текста по пробелам и преобразование каждого слова - let words = input.split(/\s+/); // Разбиваем по пробелам - // Преобразуем каждое слово - let formattedInput = words.map(word => { + + // Преобразуем каждое слово, чтобы оно начиналось с заглавной буквы + let formattedInput = input.split(' ').map(word => { if (word.length > 0) { return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); } - return ''; // Если слово пустое (например, несколько пробелов), не изменяем + return ''; // Пустые слова не трогаем }).join(' '); // Объединяем обратно с пробелами + // Обновляем поле ввода с отформатированным текстом $(this).val(formattedInput); + + // Проверяем количество слов + let words = formattedInput.trim().split(/\s+/); // Убираем лишние пробелы + if (words.length < 3 || words.some(word => word.length < 2)) { + $(this).parent().removeClass('success-field').addClass('errors-field'); // Подсветить поле + } else { + $(this).parent().removeClass('errors-field').addClass('success-field'); // Убрать подсветку + } }); + $('#email').on('input', function() { let input = $(this).val(); // Разрешаем только буквы, цифры, точки, дефисы и подчеркивания @@ -91,6 +103,42 @@ $(document).ready(function(){ } }); + $('#address').on('input', function () { + let input = $(this).val(); + + // Преобразуем все символы в верхний регистр + input = input.toUpperCase(); + + // Обновляем поле ввода + $(this).val(input); + + // Проверяем формат: должно быть минимум 5 частей, разделённых запятыми + let parts = input.split(','); + if (parts.length < 5 || parts.some(part => part.trim().length === 0)) { + $(this).parent().removeClass('success-field').addClass('errors-field'); + } else { + $(this).parent().removeClass('errors-field').addClass('success-field'); + } + }); + + $('#residential_address').on('input', function () { + let input = $(this).val(); + + // Преобразуем все символы в верхний регистр + input = input.toUpperCase(); + + // Обновляем поле ввода + $(this).val(input); + + // Проверяем формат: должно быть минимум 5 частей, разделённых запятыми + let parts = input.split(','); + if (parts.length < 5 || parts.some(part => part.trim().length === 0)) { + $(this).parent().removeClass('success-field').addClass('errors-field'); + } else { + $(this).parent().removeClass('errors-field').addClass('success-field'); + } + }); + // Проверка на дату выдачи паспорта (выдан после 14, 20 или 45 лет) $('#passport_date').on('change', function() { const passportDate = new Date($(this).val()); @@ -244,6 +292,21 @@ $(document).ready(function(){ $(this).attr("disabled", true); message = {} + if ($('#residential_address').val().split(',').length < 5 || $('#residential_address').val().split(',').some(part => part.trim().length === 0)) { + show_error('Пожалуйста, введите адрес проживания в следующем формате, используя заглавные буквы и расставляя все запятые:\nРЕГИОН, НАСЕЛЕННЫЙ ПУНКТ, УЛИЦА, ДОМ, КВАРТИРА', false); + $(this).children(".spinner-border").addClass('d-none'); + $(this).removeAttr("disabled"); + return; + } + + if ($('#address').val().split(',').length < 5 || $('#address').val().split(',').some(part => part.trim().length === 0)) { + show_error('Пожалуйста, введите адрес регистрации в следующем формате, используя заглавные буквы и расставляя все запятые:\nРЕГИОН, НАСЕЛЕННЫЙ ПУНКТ, УЛИЦА, ДОМ, КВАРТИРА', false); + $(this).children(".spinner-border").addClass('d-none'); + $(this).removeAttr("disabled"); + return; + } + + if(!(validate_length($('#fio').val(), 3))) { show_error('Введите ФИО', false); @@ -304,13 +367,7 @@ $(document).ready(function(){ return; } - if(!(validate_length($('#address').val(), 3))) - { - show_error('Введите адрес регистрации', false); - $(this).children(".spinner-border").addClass('d-none'); - $(this).removeAttr("disabled"); - return; - } + if(!(validate_length($('#residential_address').val(), 3))) {