javascript - 仅当元素存在时如何运行验证?福米克+是的
问题描述
我正在使用 Formik+Yup 创建表单和验证。我的表单是多页的,它有下一个按钮,应该禁用它,直到所有必填字段都正确填写(没有验证错误)。一切都非常简单(我只是使用 validateOnMount 和禁用按钮!formik.isValid),直到我来到带有单选按钮的页面,这应该弹出另一个问题(也带有单选按钮),具体取决于您对上一个问题的回答。
如果我使用 validateOnMount 所有验证都会运行(即使是不会弹出的问题),那么就不可能激活按钮。出于同样的原因,使用 validateOnBlur 或 OnChange 也不起作用。我只有通过编写看起来像这样的长而硬的“if”语句才能找到解决方案
disabled={
!formik.values.covidStatus ||
(formik.values.covidStatus === 'covidYes' && !formik.values.igTest) ||
(formik.values.covidStatus === 'covidYes' && formik.values.igTest === 'IgYes' &&
(!formik.values.testDate || !formik.values.igNumber)) ||
(formik.values.covidStatus === 'covidYes' && formik.values.igTest === 'IgNo' &&
!formik.values.covidDate)
}
我尝试为无线电问题编写自定义验证,问题是:是否可以确定自定义验证何时运行?准确地说,我希望该验证仅在字段存在时运行。
解决方案
推荐阅读
- javascript - 随机“未定义”被插入到字符串中
- python - 如何在 ipyvuetify 中从浅色主题切换到深色主题?
- javascript - 如何在 Javascript 中将 (yyyymmddhhss) 形式的日期时间字符串转换为 dd/mm/yyyy?
- validation - 为大数据定义数据质量规则
- algorithm - 运行感知器算法的matlab代码耗时太长
- python - 姜戈。如何向查询中添加字段?
- c# - 将 Excel 单元格设置为 TimeSpan 值
- android - 如何使用viewmodel和livedata将数据从recyclerview传递到android中的片段
- c++ - C++ 17:从模板中的 Callable 推断签名
- kubernetes - 大使 API 网关功能