Практическое руководство

Как проектировать сложные формы веб-приложения

Как проектировать сложные формы: шаги, черновики, валидация, зависимые поля, вложения, восстановление после ошибки и подтверждение результата.

Материал WebexlabПодготовлено 5 мин чтения

Краткий ответ

Сложную форму делят по смысловым этапам, сохраняют достаточно данных для продолжения и проверяют условия на сервере. Пользователь должен понимать обязательность полей, статус черновика, причину ошибки и момент окончательного приёма; повторная отправка не должна создавать нежелательные дубли.

Сначала проверьте необходимость полей

Большая форма часто появляется из внутреннего списка данных, хотя часть сведений нужна только позже. Для каждого поля спросите, какое решение принимается на его основе и когда. Если без него можно начать обработку, возможно, его стоит запросить на следующем этапе. Удаление лишней обязательности упрощает сценарий сильнее, чем декоративный индикатор прогресса.

Сгруппируйте сведения по смыслу: объект, условия, документы, подтверждение. Не делите форму на равные порции только по количеству полей. Пользователь должен понимать, почему вопросы находятся рядом и что понадобится дальше. Перед началом сообщите о необходимых файлах или данных, которые сложно получить в процессе заполнения.

Определите состояния работы

Определите состояния работы — сравнение
СостояниеЧто видит человекЧто хранит система
Новый вводПустые поля и инструкцииНачальные значения
ЧерновикСтатус сохраненияДопустимо неполные данные
ПроверкаОшибки и способы исправленияРезультат валидации
ОтправкаВыполняемое действиеИдентификатор операции
ПринятоПодтверждение и следующий шагОкончательная запись

Черновик не равен принятому обращению. Не включайте его в число завершённых заявок и не показывайте сотруднику как готовое обязательство без отдельного статуса. Если сохранение не удалось, сообщите об этом явно. Надпись «сохранено» должна отражать подтверждённый результат, а не только изменение поля в браузере.

Спроектируйте ошибки как часть сценария

Проверяйте формат рядом с полем, когда это помогает исправлению, и повторяйте необходимые проверки на сервере. Сообщение объясняет проблему и допустимое действие: например, выбрать дату позже начала. Не ограничивайтесь красной рамкой. Рекомендации W3C по формам охватывают подписи, инструкции и уведомления об ошибках; конкретные бизнес-условия определяет ваш процесс.

После ошибки отправки сохраняйте корректные значения там, где это допустимо. Для нескольких ошибок помогите найти первую и понять общую картину. Не переносите фокус хаотично при каждом символе. Проверьте клавиатуру, экранный масштаб и мобильный ввод: сложность формы особенно заметна, когда человек не использует мышь.

Учитывайте зависимые поля и изменение выбора

Выбор организации может менять список договоров, а способ доставки — доступные адреса. Определите, что происходит с ранее введённым значением, которое больше не подходит. Скрытое поле не должно незаметно отправлять устаревшие данные. Покажите значимое изменение и дайте возможность проверить итог до подтверждения.

Асинхронный ответ может прийти после нового выбора. Связывайте результат с актуальным запросом, чтобы старый список не заменил новый. При недоступности внешнего API предусмотрите понятный способ продолжения или сохранения черновика. Бесконечный индикатор загрузки без возможности вернуться оставляет человека в неопределённом состоянии.

Продумайте вложения и продолжение позже

До выбора файла сообщите ограничения формата и размера. После загрузки покажите результат и возможность заменить ошибочный документ. Удаление из интерфейса должно соответствовать состоянию на сервере. Проверки безопасности файлов и правила хранения задаются отдельно для продукта; расширение имени не доказывает допустимость содержимого.

Для продолжения с другого устройства определите способ идентификации и срок жизни черновика. Не храните чувствительные сведения в случайном публичном URL. Если сценарий требует аккаунта, свяжите его с регистрацией и восстановлением доступа. Пользователь должен понимать, где сохраняется работа и как вернуться к ней без повторного ввода.

Учебный пример заявки на оборудование

Клиент выбирает тип оборудования, заполняет параметры и прикладывает план помещения. После смены типа часть параметров теряет смысл: система объясняет, что нужно проверить, и не отправляет скрытые старые значения. Связь пропадает на последнем шаге, но подтверждённый черновик остаётся доступным после входа.

При повторной отправке система распознаёт ту же операцию и показывает существующий результат по предусмотренному контракту. Проверка защиты от дублей включает не только двойной клик, но и потерю ответа после успешного сохранения. Сотрудник получает одну принятую заявку с окончательной версией файлов.

Как принять сложную форму

Пройдите успешный путь, возврат на предыдущий шаг, изменение зависимого выбора, ошибку файла, истечение сессии и повтор. Сверьте интерфейс, запись и уведомление. Готовность означает возможность завершить задачу и восстановиться после ожидаемых сбоев, а не отсутствие ошибок в одном идеальном заполнении.

Что делать с ответами скрытой ветки формы

Предположим, пользователь выбрал доставку, заполнил адрес, затем переключился на самовывоз. Скрытие поля не определяет судьбу ранее введённых данных. Решите, сохраняются ли они для возврата к ветке и попадают ли в итоговую отправку.

Проверьте итоговое резюме: оно должно отражать действующий выбор без противоречащих полей. Сервер обязан применять те же правила, поскольку браузер может отправить изменённый набор. Отдельно проверьте возврат назад, обновление страницы и сохранённый черновик после изменения схемы. Если старый ответ больше не допустим, объясните, что требуется уточнить. Невидимое устаревшее значение не должно определять цену или маршрут обработки заявки.

Термины из материала

Источники и документация

У каждого документа указана дата последней проверки. Состав функций и интерфейсы сервисов могут меняться. Ссылки открываются в новой вкладке.

Следующий шаг

Применить к вашему проекту

Спроектируем многошаговый сценарий с черновиками, понятными ошибками и проверяемой отправкой.

Обсудить задачу
Все материалы блога