我试图用Vue和Vee验证来模拟Bootstrap form validation styling.

为了获得Boostrap验证错误消息,当出现验证错误时,输入本身必须有is-invalid个类出现.此外,错误消息元素当然必须有invalid-feedback类.

当出现验证错误时,我很难向输入中添加is-invalid个类.

在Vee validate 3中,我能够用this guide控制输入元素的类.但它似乎遭到了反对.

This是一个可以使用的代码Sandbox .没什么特别的,直接从Veevalidate example开始.

<template>
  <div id="app">
    <Form @submit="onSubmit">
      <Field name="email" type="email" :rules="validateEmail" class="form-control"/>
      <ErrorMessage class="invalid-feedback" name="email" />
      <button class="btn btn-primary">Sign up</button>
    </Form>
  </div>
</template>

<script>
  import {
    Form,
    Field,
    ErrorMessage
  } from "vee-validate";

  export default {
    components: {
      Form,
      Field,
      ErrorMessage,
    },
    methods: {
      onSubmit(values) {
        console.log(values, null, 2);
      },
      validateEmail(value) {
        // if the field is empty
        if (!value) {
          return "This field is required";
        }

        // if the field is not a valid email
        const regex = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
        if (!regex.test(value)) {
          return "This field must be a valid email";
        }

        // All is good
        return true;
      },
    },
  };
</script>

<style>
  span {
    display: block;
    margin: 10px 0;
  }
</style>

版本

  1. '水 Select ':"^4.5.11",
  2. "视图":"^ 3.2.33",

推荐答案

通过利用<Field />组件的作用域插槽,可以渲染更复杂的字段.

如果用以下部件替换Field component,则其应能正常工作:

<Field name="email" :rules="validateEmail" v-slot="{ field, errors }">
  <input v-bind="field" type="email" :class="{'is-invalid': !!errors.length }" />
</Field>

Vue.js相关问答推荐

无法解析组件:google—pay—button

VueUse onClickOutside不支持右键单击

Vuetify快速失败不会阻止发送表单

Select 项目后,Vuetify v-select在select后面显示数字1

当用户在嵌套路由中时激活链接

vuex 未知动作类型:addTodo

如果 Vuetify 自动完成没有匹配的结果,则保留输入的文本

VueJS 插件的如何react式绑定?

使用 vuex 更新数据

Vue-router:循环路由以动态创建

Object.assign 没有正确复制

如何在 vue.js 中删除类

ECMA6 中 nameFunction() {} 和 nameFunction () => {} 的区别

为什么当我 Select 第二个输入框时音译transliteration不起作用?

不需要提交Mutations的 vuex 操作

JavaScript/VueJS:判断数组是否包含具有特定值元素的对象

vuetify:以编程方式显示对话框

Vue.js:从 parent父Vue 获取数据

使用 axios 和 vue.js 取消先前的请求

IOS在输入焦点上显示键盘