【问题标题】:Cross Field Validation跨领域验证
【发布时间】:2021-11-06 18:16:39
【问题描述】:

希望我提供了足够的信息:使用下面的链接,任何人都可以将跨字段验证表单复制到一个有客户Your code must be 4 digits. 的字段中,并且一旦输入 4 位密码就不会出错(只有任何 4 个数字 @ 987654324@(不是任何其他字符))

https://codesandbox.io/s/s023f

https://vee-validate.logaretm.com/v3/advanced/rules-object-expression.html#cross-field-validation

以下是我在 equalFourDigits 上使用正则表达式 /^\d{4}$/ 尝试使用 import { extend } from "vee-validate"; 的示例,但在输入 4 个数字时我仍然看到自定义消息 - 我想保留自定义消息。

<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>

【问题讨论】:

    标签: javascript vue.js vee-validate


    【解决方案1】:

    也许您可以改用:rules="{required: true, digits:4}"

    import {digits} from 'vee-validate/dist/rules';
    extend('digits', {
      ...digits,
      message: `only four digits ...!!!!`,
    })
    

    extend("equalFourDigits", {
      validate: (value) => {
        const regex = new RegExp(/^\d{4}$/)
        if (regex.test(value)) {
          return true;
        }
        return `Your code must be 4 digits. ${value}`;
      },
    });
    

    【讨论】:

    • extend("equalFourDigits", { validate: (value) => { const regex = new RegExp(/^\d{4}$/) if (regex.test(value)) { return真;}返回Your code must be 4 digits. ${value};},});也许改变一下条件?
    • 将我的条件更改为:rules="{ required: true, digits: 4, equalFourDigits: { equalFourDigits: equalFourDigits }}" 不走运 原始答案是正确的,但如果我在输入中将类型设置为文本,则最初不会显示错误```请仅输入数字```我需要将类型更改为无法一起输入字符的用户编号
    猜你喜欢
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多