gpt4 book ai didi

javascript - 使用 Yup 验证多个输入字段

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:06 25 4
gpt4 key购买 nike

我目前正在使用 Formik 并使用 Yup 进行验证。

我希望验证 2 个日期:开始日期和结束日期。

一开始这很简单,我有两个输入字段,start_dateend_date。这两个都只是接受以下格式的文本输入:MM-YYYY。验证已经足够好了,它首先使用 moment(value, "MM-YYYY") 将字符串转换为日期。

据此,我们进行了以下测试:

start_date: Yup.string()
.test(
'test1',
'Format must be MM-YYYY',
function (value){
return moment(value, "MM-YYYY", true).isValid()
}
)
.test(
'test2',
'Start date must be before end date',
function(value){
let { end_date } = this.parent;
return moment(value, "MM-YYYY").isBefore(moment(end_date, "MM-YYYY"))
}
)

test1 只是检查 MM-YYYY 是否为有效日期。 test2 检查start_date 是否在end_date 之前。为了简单起见,end_date 测试是相同的,除了有任何额外的测试。额外测试检查 end_date 是否等于或小于当前日期。

这就是我目前拥有的,但是我想要的是 4 个输入框:

  • 开始日期_月份(01、02、03...)
  • start_date_year(2000 年、2001 年...)
  • end_date_month
  • end_date_year

这很容易做到,但测试的工作方式会有点不同,我不确定我们是否可以一起测试 start_date_monthstart_date_year 。本质上,我需要将它们与 - 连接起来以再次创建 MM-YYYY

有什么想法如何用 Yup 做到这一点吗?

最佳答案

非常短暂的问题。看来您可以只传递其他输入,例如:在 start_date_month 测试中 let {start_date_year} = this.parent

关于javascript - 使用 Yup 验证多个输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51589457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com