Con la esperanza de haber proporcionado suficiente información: si alguien puede reproducir el formulario de validación de campos cruzados en un campo que tiene un cliente, puede usar los enlaces a continuación Your code must be 4 digits. & no hay error una vez que se ingresa el PIN de 4 dígitos (solo 4 números, eg.(1234),(0000),(9999) (ningún otro carácter))
https://codesandbox.io/s/s023f
https://vee-validate.logaretm.com/v3/advanced/rules-object-expression.html#cross-field-validation
A continuación se muestra mi intento con import { extend } from "vee-validate"; ejemplo usando regex /^\d{4}$/ en equalFourDigits pero sigo viendo el mensaje personalizado cuando se ingresan 4 números; quiero mantener el mensaje personalizado.
<script> import { extend } from "vee-validate"; extend("equalFourDigits", { params: ["equalFourDigits"], validate: ({ equalFourDigits }) => { if ( equalFourDigits === /^\d{4}$/ ) { return true; } return false; }, message: "Your code must be 4 digits. {equalFourDigits}" }); export default { data: () => ({ firstValue: '', secondValue: '', equalFourDigits: '' }) }; </script> <template> <ValidationObserver> <ValidationProvider :rules="{ required: true, numeric: 4, equalFourDigits: { equalFourDigits: equalFourDigits }}" v-slot="{ errors }"> <input type="text" v-model.number="secondValue"> <span>{{ errors[0] }}</span> </ValidationProvider> </ValidationObserver> </template>¿quizás puedas usar :rules="{required: true, digits:4}" en su lugar?
import {digits} from 'vee-validate/dist/rules'; extend('digits', { ...digits, message: `only four digits ...!!!!`, })o
extend("equalFourDigits", { validate: (value) => { const regex = new RegExp(/^\d{4}$/) if (regex.test(value)) { return true; } return `Your code must be 4 digits. ${value}`; }, });