在下面的代码栏中,我有一个简单的输入,其中包含一个日期:
<input type="text"
v-model="startDate"
name="StartDate"
v-validate="{ required: false, date_format: 'dd/MM/yyyy', before: maxStartDate }"/>
无论我输入哪个有效日期,都会产生一个错误:
StartDate必须在2019-08-01T03:59:59.999Z之前。
我也尝试过:
我还注意到vee-validate在其消息传递中使用了英国风格的语言环境。例如,我在美国,但日期回溯到2019年7月25日。我不知道日期比较是否会偏斜。
答案 0 :(得分:1)
before
验证器无法正常工作。它想要的是对另一个包含日期的字段的引用-想象一下,如果要创建startDate和endDate字段,则需要确保startDate在endDate之前。这就是这样做的。
您应使用的验证者为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');
}