当前位置:首页 > VUE

vue表单实现

2026-01-13 08:21:25VUE

Vue 表单实现方法

双向数据绑定

使用 v-model 指令实现表单输入与应用状态的双向绑定,适用于各类表单控件。例如文本输入框:

<input v-model="message" placeholder="Edit me">
<p>Message is: {{ message }}</p>

复选框处理

单个复选框绑定布尔值,多个复选框绑定数组:

<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>

<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<input type="checkbox" id="john" value="John" v-model="checkedNames">

单选按钮处理

通过 v-model 绑定选中的值:

<input type="radio" id="one" value="One" v-model="picked">
<input type="radio" id="two" value="Two" v-model="picked">

下拉选择框

单选和多选模式的处理:

<select v-model="selected">
  <option disabled value="">Please select</option>
  <option>A</option>
  <option>B</option>
</select>

<select v-model="selected" multiple>
  <option>A</option>
  <option>B</option>
</select>

表单验证

结合计算属性或第三方库如 VeeValidate 进行验证:

data() {
  return {
    email: '',
    password: ''
  }
},
computed: {
  emailValid() {
    return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.email)
  }
}

表单提交

使用 @submit.prevent 阻止默认提交行为并处理数据:

<form @submit.prevent="onSubmit">
  <input v-model="email">
  <button type="submit">Submit</button>
</form>

methods: {
  onSubmit() {
    if(this.emailValid) {
      // 提交逻辑
    }
  }
}

动态表单字段

通过 v-for 实现动态生成的表单字段:

<div v-for="(item, index) in items" :key="index">
  <input v-model="item.value">
  <button @click="removeItem(index)">Remove</button>
</div>
<button @click="addItem">Add Item</button>

表单修饰符

常用 v-model 修饰符:

  • .lazy:转为 change 事件后同步
  • .number:自动将输入转为数字
  • .trim:自动去除首尾空格
<input v-model.lazy="msg">
<input v-model.number="age">
<input v-model.trim="text">

第三方表单库

推荐使用专业表单处理库:

vue表单实现

  • VeeValidate:提供声明式验证规则
  • Vuelidate:基于模型的轻量验证
  • Element UI/Ant Design Vue:包含预制表单组件

这些方法覆盖了 Vue 表单开发的主要场景,可根据具体需求选择合适方案。

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

相关文章

vue实现海报

vue实现海报

Vue 实现海报生成方案 使用 html2canvas 库 html2canvas 是一个将 HTML 元素转换为 Canvas 的库,适合将 Vue 组件渲染为海报图片 安装依赖: npm in…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue实现tabs

vue实现tabs

Vue实现Tabs组件的方法 使用动态组件和v-for指令 在Vue中创建Tabs组件可以通过动态组件和v-for指令实现。定义一个包含tab标题和内容的数组,使用v-for渲染tab标题,并通过点击…

vue实现多线程

vue实现多线程

Vue.js 本身是单线程框架,但可以通过以下方法实现类似多线程的效果或利用浏览器多线程能力: 使用 Web Worker Web Worker 是浏览器提供的多线程 API,适合处理 CPU 密集…

vue怎么实现 tab

vue怎么实现 tab

Vue 实现 Tab 的方法 使用动态组件和 v-if 通过动态组件或 v-if 指令切换不同 Tab 内容,结合点击事件改变当前激活的 Tab。 <template> <di…

vue router 实现onshow

vue router 实现onshow

Vue Router 实现 onShow 功能 Vue Router 本身没有直接提供 onShow 这样的生命周期钩子,但可以通过以下方法模拟类似功能。 使用导航守卫 导航守卫可以在路由切换时触发…