首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在对象数组中的每个电子邮件值字段上验证电子邮件

无法在对象数组中的每个电子邮件值字段上验证电子邮件
EN

Stack Overflow用户
提问于 2019-11-11 00:47:19
回答 2查看 316关注 0票数 0

我正在尝试验证对象中的value字段是否包含电子邮件。一个数组中可能有许多这样的对象。当我评估它是否为$dirty时,它会说值是未定义的。验证也根本不起作用。我以前从未验证过对象数组,因为假设我访问数组中的数据是错误的,但我不确定

示例对象: Value将包含我试图验证的电子邮件

代码语言:javascript
代码运行次数:0
运行
复制
{
   option: null,
   Value: null,
   Environment: null
}

验证:

代码语言:javascript
代码运行次数:0
运行
复制
validations: {
    defaultFields: {
      $each: {
        Value: { email }
      }
    },
  }

自定义错误函数:这就是在第一个If语句中抛出错误的原因,但是验证无论哪种方式都不起作用。

代码语言:javascript
代码运行次数:0
运行
复制
computed: {
  emailErrors() {
      const errors = [];
      if (!this.$v.defaultFields.$each.Value.$dirty) return errors;
      !this.$v.defaultFields.$each.Value.email && errors.push('You must enter a valid email');
      return errors;
    }
}

这是一个循环和循环中的字段的示例,我试图迭代并验证输入的是有效的电子邮件。

代码语言:javascript
代码运行次数:0
运行
复制
<v-form>
    <div v-for="(defaultField, defaultIndex) in defaultFields" v-bind:key="`${defaultIndex}-default`">
        <v-text-field
        @input="$v.defaultFields.$each[defaultIndex].Value.$touch()"
        @blur="$v.defaultFields.$each[defaultIndex].Value.$touch()"
        :error-messages="emailErrors(defaultIndex)"
        id="value"
        v-model="defaultField.Value"
        label="Email Address"
        type="email"
        ></v-text-field>
    </div>
</v-form>
EN

回答 2

Stack Overflow用户

发布于 2021-05-10 23:16:17

我正在尝试Funkel的方法。但它不起作用。但是,如果你像下面这样写这个email erros方法,它会工作得很好。除了emailErrors方法之外,一切都是正常的。

代码语言:javascript
代码运行次数:0
运行
复制
 methods: {
  emailErrors(defaultIndex) {
     const errors = [];
     if (!this.$v.defaultFields.$each[defaultIndex].Value.$dirty) return errors;
     !this.$v.defaultFields.$each[defaultIndex].Value.email && errors.push('You must enter a valid email');
  return errors;
}

}

票数 1
EN

Stack Overflow用户

发布于 2019-11-12 03:12:16

所以我才能弄明白这一点。我接收defaultIndex的方法

代码语言:javascript
代码运行次数:0
运行
复制
:error-messages="emailErrors(defaultIndex)"

位于计算的生命周期钩子中。在将其移动到方法生命周期钩子之后,我能够传入索引,并且它纠正了错误

代码语言:javascript
代码运行次数:0
运行
复制
<v-form>
    <div v-for="(defaultField, defaultIndex) in defaultFields" v-bind:key="`${defaultIndex}-default`">
        <v-text-field
        @input="$v.defaultFields.$each[defaultIndex].Value.$touch()"
        @blur="$v.defaultFields.$each[defaultIndex].Value.$touch()"
        :error-messages="emailErrors(defaultIndex)"
        id="value"
        v-model="defaultField.Value"
        label="Email Address"
        type="email"
        ></v-text-field>
    </div>
</v-form>


methods: {
  emailErrors() {
      const errors = [];
      if (!this.$v.defaultFields.$each.Value.$dirty) return errors;
      !this.$v.defaultFields.$each.Value.email && errors.push('You must enter a valid email');
      return errors;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58790821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档