当前位置:首页 > VUE

vue表单验证如何实现

2026-01-22 06:02:22VUE

使用 Vue 内置验证(v-model + 手动检查)

通过 v-model 绑定表单数据,在提交时手动检查字段有效性。适用于简单场景。

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="form.email" type="email" placeholder="Email">
    <span v-if="error.email">{{ error.email }}</span>
    <button type="submit">Submit</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      form: { email: '' },
      error: {}
    }
  },
  methods: {
    handleSubmit() {
      this.error = {}
      if (!this.form.email.includes('@')) {
        this.error.email = 'Invalid email format'
        return
      }
      // 提交逻辑
    }
  }
}
</script>

使用 VeeValidate 插件

VeeValidate 提供声明式验证规则和错误提示功能,适合复杂表单场景。

vue表单验证如何实现

<template>
  <Form @submit="handleSubmit">
    <Field name="email" rules="required|email" v-model="form.email" />
    <ErrorMessage name="email" />
    <button type="submit">Submit</button>
  </Form>
</template>

<script>
import { Form, Field, ErrorMessage } from 'vee-validate'
export default {
  components: { Form, Field, ErrorMessage },
  data() {
    return { form: { email: '' } }
  },
  methods: {
    handleSubmit(values) {
      console.log(values) // 已验证的数据
    }
  }
}
</script>

组合式 API 实现验证

通过 ref 和计算属性实现响应式验证,适合 Vue 3 项目。

<template>
  <input v-model="email" @blur="validateEmail">
  <span v-if="emailError">{{ emailError }}</span>
</template>

<script setup>
import { ref, computed } from 'vue'
const email = ref('')
const emailError = ref('')

const validateEmail = () => {
  emailError.value = email.value.includes('@') ? '' : 'Invalid email'
}
</script>

自定义验证指令

创建全局指令实现复用验证逻辑,适合需要统一验证风格的场景。

vue表单验证如何实现

// main.js
app.directive('validate-email', {
  mounted(el, binding) {
    el.addEventListener('blur', () => {
      const isValid = el.value.includes('@')
      if (!isValid) {
        el.style.borderColor = 'red'
      }
    })
  }
})
<input v-validate-email v-model="email">

服务端验证结合

前端验证通过后仍需调用 API 进行最终验证,处理用户名重复等业务规则。

methods: {
  async submitForm() {
    try {
      const res = await axios.post('/api/validate', this.form)
      // 处理成功响应
    } catch (error) {
      if (error.response.status === 422) {
        this.errors = error.response.data.errors
      }
    }
  }
}

关键点:

  • 实时验证使用 @inputwatch
  • 提交前验证使用 @submit.prevent
  • 复杂规则建议使用验证库如 VeeValidate 或 async-validator
  • 密码强度等特殊验证需自定义正则表达式

分享给朋友:

相关文章

vue如何实现默认页面

vue如何实现默认页面

实现 Vue 默认页面的方法 在 Vue 中实现默认页面通常涉及路由配置。以下是几种常见的方法: 使用路由重定向 在 Vue Router 配置中,可以通过 redirect 属性设置默认路由:…

vue实现表单

vue实现表单

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定。适用于 input、textarea、select 等元素。 <template> &l…

css 制作表单

css 制作表单

使用 CSS 制作表单 表单是网页交互的重要组成部分,通过 CSS 可以美化表单元素,提升用户体验。以下是常见的表单样式设计方法。 基础表单结构 HTML 表单通常包含输入框、标签、按钮等元素。以…

css怎么制作表单

css怎么制作表单

基础表单结构 使用HTML创建表单元素,搭配CSS进行样式设计。表单通常包含<form>标签及输入控件(如<input>、<textarea>、<select…

vue表单实现搜索

vue表单实现搜索

实现 Vue 表单搜索功能 基础表单绑定 在 Vue 中通过 v-model 实现表单输入与数据的双向绑定,搜索框通常绑定一个字符串类型的数据。 <template> <in…

Vue如何实现多级域名

Vue如何实现多级域名

Vue 实现多级域名的方法 Vue 本身是一个前端框架,多级域名的实现通常需要结合后端配置和前端路由。以下是几种常见的方法: 使用路由动态匹配 在 Vue Router 中可以通过动态路由参数…