使用 vue.js 和 vee-validate,使用 after: 和计算字段的日期验证似乎不起作用
Using vue.js and vee-validate, date validation using after: and a computed field doesn't seem to work
在下面的代码笔中,我有一个包含日期的简单输入:
<input type="text"
v-model="startDate"
name="StartDate"
v-validate="{ required: false, date_format: 'dd/MM/yyyy', before: maxStartDate }"/>
无论我输入什么有效日期,都会生成错误:
开始日期必须在 2019-08-01T03:59:59.999Z 之前。
我也试过:
- 制作 maxStartDate return JavaScript 日期对象、ISO 日期(见此处)和简单日期,如“1/1/2019”。
- 验证规则的各种组合。否date_format、不需要等
- 我已经在这个上面好几个小时了。感觉好像我错过了一些明显的东西,很快就会踢自己。
我还注意到 vee-validate 在其消息传递中使用了英国风格的语言环境。例如,我在美国,但返回的日期是 25/07/2019。我想知道日期比较是否有偏差。
before
验证器并不像您想象的那样工作。它想要的是对另一个包含日期的字段的引用——想象一下,如果您正在创建一个开始日期和结束日期字段,您需要确保开始日期在结束日期之前。这就是它的作用。
您应该使用的验证器是 date_between
,如下所示:
<input type="text"
v-model="startDate"
name="StartDate"
v-validate="{ date_format: 'dd/MM/yyyy', date_between:['01/01/1990',maxStartDate] }"/>
而且我不得不像这样修改 maxStartDate 的定义:
maxStartDate: function() {
return moment()
.startOf('month')
.add(1, 'months')
.endOf('month').format('DD/MM/YYYY');
}
在下面的代码笔中,我有一个包含日期的简单输入:
<input type="text"
v-model="startDate"
name="StartDate"
v-validate="{ required: false, date_format: 'dd/MM/yyyy', before: maxStartDate }"/>
无论我输入什么有效日期,都会生成错误:
开始日期必须在 2019-08-01T03:59:59.999Z 之前。
我也试过:
- 制作 maxStartDate return JavaScript 日期对象、ISO 日期(见此处)和简单日期,如“1/1/2019”。
- 验证规则的各种组合。否date_format、不需要等
- 我已经在这个上面好几个小时了。感觉好像我错过了一些明显的东西,很快就会踢自己。
我还注意到 vee-validate 在其消息传递中使用了英国风格的语言环境。例如,我在美国,但返回的日期是 25/07/2019。我想知道日期比较是否有偏差。
before
验证器并不像您想象的那样工作。它想要的是对另一个包含日期的字段的引用——想象一下,如果您正在创建一个开始日期和结束日期字段,您需要确保开始日期在结束日期之前。这就是它的作用。
您应该使用的验证器是 date_between
,如下所示:
<input type="text"
v-model="startDate"
name="StartDate"
v-validate="{ date_format: 'dd/MM/yyyy', date_between:['01/01/1990',maxStartDate] }"/>
而且我不得不像这样修改 maxStartDate 的定义:
maxStartDate: function() {
return moment()
.startOf('month')
.add(1, 'months')
.endOf('month').format('DD/MM/YYYY');
}