[英]Validating multiple inputs field with Yup
我目前正在使用Formik並通過Yup進行驗證。
我想驗證2個日期,開始日期和結束日期。
起初這很簡單,我有兩個輸入字段, start_date
和end_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個輸入框:
start_date_month
(01,02,03 ...) start_date_year
(2000,2001 ...) end_date_month
end_date_year
這很容易做到,但是測試會有所不同,我不確定是否可以一起測試start_date_month
和start_date_year
。 從本質上講,我需要使用-
再次創建MM-YYYY
。
有任何想法如何使用Yup做到這一點?
壽命很短的問題。 看來您可以只輸入其他輸入,例如:在start_date_month
測試中, let {start_date_year} = this.parent
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.