当前位置:首页 > VUE

vue 实现新增表单

2026-02-20 01:26:54VUE

实现新增表单的基本步骤

在Vue中实现新增表单功能,可以通过以下方式完成。假设使用Vue 3和Composition API。

模板部分

<template>
  <form @submit.prevent="handleSubmit">
    <div>
      <label for="name">名称:</label>
      <input id="name" v-model="formData.name" type="text" />
    </div>
    <div>
      <label for="email">邮箱:</label>
      <input id="email" v-model="formData.email" type="email" />
    </div>
    <button type="submit">提交</button>
  </form>
</template>

脚本部分

<script setup>
import { reactive } from 'vue'

const formData = reactive({
  name: '',
  email: ''
})

const handleSubmit = () => {
  console.log('提交数据:', formData)
  // 这里可以添加API调用或其他处理逻辑
  // 例如:axios.post('/api/users', formData)
}
</script>

表单验证的实现

使用Vuelidate进行表单验证可以提升用户体验。

vue 实现新增表单

安装Vuelidate:

npm install @vuelidate/core @vuelidate/validators

实现验证:

vue 实现新增表单

<script setup>
import { reactive } from 'vue'
import useVuelidate from '@vuelidate/core'
import { required, email } from '@vuelidate/validators'

const formData = reactive({
  name: '',
  email: ''
})

const rules = {
  name: { required },
  email: { required, email }
}

const v$ = useVuelidate(rules, formData)

const handleSubmit = async () => {
  const isValid = await v$.value.$validate()
  if (!isValid) return

  console.log('验证通过,提交数据:', formData)
}
</script>

表单重置功能

添加重置按钮可以方便用户重新填写表单。

<template>
  <form @submit.prevent="handleSubmit" @reset="handleReset">
    <!-- 表单字段 -->
    <button type="submit">提交</button>
    <button type="reset">重置</button>
  </form>
</template>

<script setup>
const handleReset = () => {
  formData.name = ''
  formData.email = ''
  v$.value.$reset()
}
</script>

表单加载状态

在提交表单时显示加载状态可以提升用户体验。

<script setup>
import { ref } from 'vue'

const isLoading = ref(false)

const handleSubmit = async () => {
  isLoading.value = true
  try {
    await axios.post('/api/users', formData)
    // 处理成功情况
  } catch (error) {
    // 处理错误
  } finally {
    isLoading.value = false
  }
}
</script>
<button type="submit" :disabled="isLoading">
  {{ isLoading ? '提交中...' : '提交' }}
</button>

表单成功/错误反馈

添加成功和错误提示可以让用户明确操作结果。

<script setup>
const isSuccess = ref(false)
const errorMessage = ref('')

const handleSubmit = async () => {
  try {
    await axios.post('/api/users', formData)
    isSuccess.value = true
    errorMessage.value = ''
  } catch (error) {
    isSuccess.value = false
    errorMessage.value = error.response?.data?.message || '提交失败'
  }
}
</script>
<template>
  <div v-if="isSuccess" class="success-message">
    提交成功!
  </div>
  <div v-if="errorMessage" class="error-message">
    {{ errorMessage }}
  </div>
</template>

标签: 表单vue
分享给朋友:

相关文章

vue实现新闻

vue实现新闻

Vue 实现新闻功能 使用 Vue 实现新闻功能通常涉及新闻列表展示、新闻详情页、分类筛选等模块。以下是实现的基本思路和代码示例。 新闻列表展示 通过 Vue 组件展示新闻列表,通常使用 v-for…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在 V…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue实现增删

vue实现增删

Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是基于 Vue 2 或 Vue 3 的实现方法: 数据定义 初始化一个数组用于存储列表数据,并在 Vue 实…

vue实现刷新

vue实现刷新

Vue 实现页面刷新的方法 在Vue中实现页面刷新可以通过多种方式,以下是几种常见的方法: 使用 window.location.reload() 通过调用浏览器的原生方法强制刷新当前页面: me…

vue实现settimeout

vue实现settimeout

在 Vue 中实现 setTimeout Vue 中可以通过 JavaScript 原生的 setTimeout 方法实现延时操作,但需要注意结合 Vue 的响应式特性和生命周期管理。以下是几种常见实…