如何在 vee-validate 中使用自定义消息进行跨字段验证?

How to make a cross field validation with a custom message in vee-validate?

请参阅 this 文档。

在此处显示的示例中,我需要在消息中显示 minmax 值。

我该怎么做?

更新答案

那些页面帮助了我:

这就是您如何通过引用各种输入来实现这一点。

<template>
  <ValidationObserver>
    <ValidationProvider
      :rules="{ required: true, between: { min: '@min', max: '@max' } }"
      v-slot="{ errors }"
    >
      <ValidationProvider
        rules="required"
        vid="min"
        v-slot="{ errors, message }"
      >
        <input type="number" v-model.number="minValue" />
        <span>{{ errors[0] }}</span>
        <div>message here: {{ message }}</div>
      </ValidationProvider>

      <input type="number" v-model.number="value" />
      <span>{{ errors[0] }}</span>

      <ValidationProvider vid="max" rules="required" v-slot="{ errors }">
        <input type="number" v-model.number="maxValue" />
        <span>{{ errors[0] }}</span>
      </ValidationProvider>
    </ValidationProvider>
  </ValidationObserver>
</template>

<script>
import { extend } from "vee-validate";

extend("between", {
  params: ["min", "max"],
  validate(value, { min, max }) {
    return value >= min && value <= max;
  },
  message: (_, values) =>
    `This field value must be between ${values["_min_"]} and ${values["_max_"]}`,
});

export default {
  data: () => ({
    minValue: 0,
    value: 1,
    maxValue: 10,
  }),
};
</script>

这是一个有效的 codesandbox


不确定为什么引用另一个字段到目前为止不起作用:https://vee-validate.logaretm.com/v3/advanced/cross-field-validation.html#targeting-other-fields

只要将rules="required|between:@min,@max"改成rules="required|between:4,25"即可。

我看看能不能通过引用别的字段找到写法!