使用 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 之前。

我也试过:

我还注意到 vee-validate 在其消息传递中使用了英国风格的语言环境。例如,我在美国,但返回的日期是 25/07/2019。我想知道日期比较是否有偏差。

代码笔:https://codepen.io/Kinetiq/pen/XLeEaM

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');
            }

工作示例:https://codepen.io/anon/pen/NZaLzg