Как только поля формы были проверены, отправка не запускает повторную проверку. Есть ли способ, которым я могу запустить повторную проверку при отправке формы?
У меня есть поле формы, значение которого может стать недействительным, если оно не отправлено в течение определенного периода времени. Это не асинхронно; Я просто пытаюсь описать сценарий, в котором пользователь не нажимает кнопку «Отправить» некоторое время, и когда он в конечном итоге делает это значение становится недействительным Окончательная форма запоминает результат проверки, которая происходит сразу после изменения значения, что означает, что неизменное значение остается действительным независимо от того, сколько времени проходит между проверкой и отправкой. Это поведение, которое я хочу подключить и изменить; прошедшее время имеет значение в моем случае использования. Я попытался использовать прослушиватель beforeSubmit
из пакета final-form-submit-listener
, но он только дает доступ к объекту FormApi
. Я пытался использовать функции pauseValidation
и resumeValidation
из FormApi
, но они не смогли добиться того, чего я хочу, или, может быть, я их не правильно использую. У меня такое чувство, что это мучительно очевидно, как это сделать, но я не могу этого понять. ?
Я создал эту Песочницу , чтобы продемонстрировать, что я имею в виду.
Спасибо!
ОБНОВЛЕНИЕ : Некоторая дополнительная информация:
- Это для выбора времени. Если вы выбираете время на сегодня, вы можете выбрать время, которое будет через 15 минут. Это действует сейчас, потому что это в настоящее время в будущем. Если вы не коснетесь формы в течение следующих 20 минут, а затем нажмите «Отправить», отправка должна быть запрещена, поскольку выбранное вами время уже прошло 5 минут.
- Я рассмотрел просто добавление проверки непосредственно в обработчик отправки. Два ответа здесь делают это. Однако, это не идеально для меня, потому что Final Form не получает ошибки и передает их объекту
meta
для полей формы. Моя кодовая база сложна и сильно зависит от объекта meta
для отображения сообщений об ошибках. Попытка реплицировать эту функциональность в обработчике отправки может работать, но это хакерство и противоречит соглашению, используемому в кодовой базе.