vee validate 2.2-具有两个跨字段验证参数的自定义规则



我正在尝试使用vee-validate验证一个字段,该字段依赖于另外两个输入参数。需要验证的字段是一个平均值字段,该字段不得大于给定的最大值且不得小于给定的最小值。

<v-text-field v-model="kind.bhd_min"
v-validate="'required|minBHD:maxBHD'"
v-currency="{locale:'de', currency:null}"
ref="minBHD"
...>
</v-text-field>
<v-text-field v-model="kind.bhd_max"                                             
v-validate="'required'"
v-currency="{locale:'de', currency:null}"
ref="maxBHD"
...>

</v-text-field>
<v-text-field v-model="kind.average_bhd"
:data-vv-name="`average_bhd-${index}`"
v-validate="'required|averageBHD:minBHD,maxBHD'"
v-currency="{locale:'de', currency:null}" 
:error-messages="errors.first(`average_bhd-${index}`)">
</v-text-field>

我的自定义规则如下:

const averageBHD = {
validate: (value, [min,max] = {}) => {
console.log(value,min,max);
return value > min && value < max;
},
};
Validator.extend('averageBHD', averageBHD, {hasTarget: true});

当console.log((在清理相关字段时输出一些值时,会正确调用自定义规则。然而,第二个参数(max(从来不是被引用字段的实际值,而是字符串文字";maxBHD";其看起来是CCD_ 1属性的值。第一个参数min被正确记录,从而指示ref正在工作。

我做错了什么?应该可以在自定义规则中引用多个字段,对吧?

不是从ref中获取值,而是将该值与model绑定:

<input type="text" v-model="data1" v-validate="'averageBHD:'+data2+','+data3" name="da1" ref="da1">
<input type="text" v-model="data2" v-validate="'averageBHD:'+data1+','+data3" name="da2" ref="da2">
<input type="text" v-model="data3" v-validate="'averageBHD:'+data1+','+data2" name="da3" ref="da3">
const averageBHD = {
validate: (value, [min,max] = {}) => {
console.log(value,min,max);
return value > min && value < max;
},
};
const paramNames = ['min', 'max'];
Validator.extend('averageBHD', averageBHD, paramNames );

最新更新