验证表单的字段后,提交不会触发重新运行验证。有没有办法在提交表单时触发重新运行验证?
我有一个表单字段,如果未在特定时间范围内提交,其值可能会变为无效。它不是异步的;我只是试图涵盖用户暂时不点击提交的场景,当他们最终点击提交时,该值将变为无效。最终形式会记住在值更改后立即发生的验证结果,这意味着无论验证和提交之间经过多长时间,未更改的值仍然有效。这是我想要改变的行为;在我的用例中,干预时间很重要。我曾尝试使用包中的beforeSubmit
侦听器,final-form-submit-listener
但它只允许访问该FormApi
对象。我尝试使用pauseValidation
andresumeValidation
函数FormApi
但他们无法实现我想要的,或者我没有正确使用它们。我有一种感觉,如何做到这一点非常明显,但我无法弄清楚。
我创建了这个沙盒来说明我的意思。
谢谢!
更新:一些附加信息:
- 这是一个时间选择器。如果您要选择今天的时间,您可以选择 15 分钟后的时间。它现在有效,因为它现在在未来。如果您在接下来的 20 分钟内未触摸表单然后单击提交,则应阻止提交,因为您选择的时间现在是过去 5 分钟。
- 我考虑过直接在提交处理程序中添加验证。这里有两个答案。但是,这对我来说并不理想,因为最终表单不会收到错误并将它们传递给
meta
表单字段的对象。我的代码库很复杂,并且严重依赖meta
对象来显示错误消息。尝试在提交处理程序中复制该功能可能会起作用,但它很hacky并且违反了整个代码库中使用的约定。