小编Lau*_*tle的帖子

使用 Yup.ref 和 .test 根据多个相关字段值验证 Yup 中的字段

我在“react”中创建了一个多步骤表单:“^17.0.1”,“yup”:“^0.29.3”和“formik”:“^2.2.3”。

我想检查当用户输入生日 (dobD) 时,根据出生月份 (dobM) 和出生年份 (dobY) 是否有效。

我有 3 个独立的输入。 dobM, dobD, dobY

对 dobD 的第一次检查有效(即用户只能输入 1 到 31 之间的值),但是如果该月少于 31 天(例如 6 月或 9 月)或者该月是 2 月(除闰年外,只有 28 天)。

我尝试使用 Yup.ref 引用日期字段验证中的年份和月份字段,但是如果我输入月份 04,用户仍然可以输入 31,这是不正确的(因为 4 月 (04) 只有 30 天)。

有什么想法可以解决这个问题吗?谢谢你!

这是我当前正在使用的验证:

  // Step 3: Date of Birth
  Yup.object().shape({
    dobM: Yup.string()
      .test(
        'dobM',
        'Invalid Month',
        value => {
          if (value < 1 || value > 12) {
            return false;
          }
          return true;
        }
      )
      .min(2, 'Invalid')
      .max(2, 'Invalid') …
Run Code Online (Sandbox Code Playgroud)

javascript validation reactjs yup formik

2
推荐指数
1
解决办法
6935
查看次数

标签 统计

formik ×1

javascript ×1

reactjs ×1

validation ×1

yup ×1