当前位置:首页 > 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 提供声明式验证规则和错误提示功能,适合复杂表单场景。

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

自定义验证指令

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

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

关键点:

vue表单验证如何实现

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

分享给朋友:

相关文章

vue如何实现到期提醒

vue如何实现到期提醒

实现思路 在Vue中实现到期提醒功能,可以通过计算日期差、定时检查和通知用户三个核心步骤完成。需要结合Vue的响应式特性和JavaScript的日期处理能力。 计算日期差 使用JavaScript的…

form表单elementui

form表单elementui

Form 表单 ElementUI 使用指南 ElementUI 提供了强大的表单组件,支持数据绑定、验证和自定义样式等功能。以下是使用方法和常见场景的解决方案。 基本表单结构 使用 el-form…

vue如何实现

vue如何实现

Vue 实现方法 Vue 提供了多种方式来实现功能,具体取决于需求。以下是一些常见场景的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。在组件中可以通过 pro…

如何实现语音react

如何实现语音react

语音识别基础设置 在React中实现语音识别功能通常需要借助浏览器的Web Speech API或第三方库。Web Speech API提供了SpeechRecognition接口,允许应用程序直接访…

vue如何实现递归

vue如何实现递归

递归组件的实现方法 在Vue中实现递归组件通常用于渲染树形结构或嵌套数据。核心思路是组件在其模板中调用自身,但需注意终止条件以避免无限循环。 定义递归组件 组件需设置name选项,才能在模板中调用自…

vue如何实现轮询

vue如何实现轮询

实现轮询的方法 在Vue中实现轮询可以通过以下几种方式完成,具体选择取决于项目需求和场景。 使用 setInterval 通过 setInterval 定时调用接口或执行任务,适合简单的轮询场景。…