validation - Vuetify 表单验证——定义匹配输入的 ES6 规则

标签 validation ecmascript-6 vue.js vuejs2 vuetify.js

我有一个带有电子邮件输入的 (Vuetify) 表单,该表单使用 ES6 和正则表达式来检查它是否是有效的电子邮件。我将如何设置另一个 emailConfirmationRules 规则集来检查 emailConfirmation 输入是否与 email 输入匹配?

<template>
  <v-form v-model="valid">
       <v-text-field label="Email Address"
            v-model="email" 
            :rules="emailRules"
            required></v-text-field>

       <v-text-field label="Confirm Email Address"
            v-model="emailConfirmation" 
            :rules="emailConfirmationRules"
            required></v-text-field>
   </v-form>
 <template>

export default {
    data () {
      return {
         valid: false,
         email: '',
         emailConfirmation: '',
         emailRules: [
             (v) => !!v || 'E-mail is required',
             (v) => /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
        ],
        emailConfirmationRules: [
            (v) => !!v || 'Confirmation E-mail is required',
        ]   (v) => ??? || 'Confirmation E-mail does not match'
    }
}

最佳答案

规则不是处理字段确认的正确方法。 emailConfirmationRules 仅在 emailConfirmation 更改时触发,但如果您再次更改 email ,您的字段将不再匹配而不会违反任何规则。

你必须手动处理:

methods: {
  emailMatchError () { 
    return (this.email === this.emailConfirmation) ? '' : 'Email must match'
  }
}
<v-text-field v-model='emailConfirmation' :error-messages='emailMatchError()'></v-text-field>

可能还有一种使用 vee-validate 执行此操作的替代方法。

关于validation - Vuetify 表单验证——定义匹配输入的 ES6 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213703/

相关文章:

css - Vue JS "scope"样式不适用于 SVG 内部元素

webpack - 在 Vue.JS SPA 中添加包的正确方法

c++ - (C++) 如何验证 char 变量的用户输入?

javascript - 验证器启用不起作用

javascript - 执行正则表达式,同时将所有变量保留在 block 范围内

具有多个参数的 Javascript 函数

c# - 使用 S#arp 架构的 NHibernate 验证本地化

eclipse - 在 Eclipse 中实现验证器

javascript - 在嵌套对象上实现代理

javascript - 如何在 Bootstrap 内使用 Vue.js 发出事件?