日期范围验证-在jquense / yup中,开始日期不得与结束日期相同

时间:2020-09-09 08:24:12

标签: reactjs validation yup

我正在使用Yup在reactjs中进行表单验证。我的表单有两个日期,startDateendDate。我已成功实施范围验证。但在我的场景中,startDate必须比endDate更好(不应相等)。但是下面的架构仅检查endDate小于方案的情况。接受相同日期的地方。请帮忙。

我正在使用的模式是:

schema = Yup.object().shape({
    startDate: Yup.date().min(new Date(), 'Please choose future date').typeError('Start Date is Required'),
    endDate: Yup.date().min(Yup.ref('startDate'), 'End date must be grater than start date').typeError('End Date is Required'),
});

1 个答案:

答案 0 :(得分:0)

我知道为时已晚,但我正在发布此答案,如果有帮助,我找到了此解决方案:

    schema = Yup.object().shape({ 
          startDate: yup
            .date()
            .required("Start Date is Required"),
          endDate: yup
            .date()
            .min(
              yup.ref("startDate"),
              "End date must be grater than start date"
            )
            .test({
              name: "same",
              exclusive: false,
              params: {},
              message: "End date must be grater than start date",
              test: function(value) {
                const startDate = moment(this.parent.startDate).format("YYYY-MM-DD")
                const endDate = moment(value).format("YYYY-MM-DD")
                return !moment(startDate).isSame(moment(endDate))
              },
            }),
});