Vue 表单
Vue.js 是一个流行的前端 JavaScript 框架,用于构建用户界面。Vue.js 提供了对表单输入的双向数据绑定,使得在 Vue 应用中处理表单变得非常简洁和直观。
基础用法
使用 v-model 指令创建数据双向绑定。它会根据输入类型自动选取正确的方式更新数据。
<input v-model="message" placeholder="Enter message">
在Vue实例中:
new Vue({
el: '#app',
data: {
message: ''
}
});不同类型的输入
v-model 可以用于不同类型的 <input>,如 text, password, checkbox, radio 等。
<!-- 文本输入 --> <input v-model="username" type="text"> <!-- 复选框 --> <input v-model="checked" type="checkbox"> <!-- 单选按钮 --> <input v-model="picked" type="radio" value="One">
修饰符
v-model 可以与修饰符一起使用,例如 .lazy, .number, 和 .trim。
<!-- 在"change"事件之后更新而不是"input" --> <input v-model.lazy="msg" > <!-- 自动将用户的输入转换为数值 --> <input v-model.number="age" type="number"> <!-- 自动过滤用户输入,删除首尾空白 --> <input v-model.trim="msg">
组件事件
使用 v-on 或 @ 来监听表单元素的事件,如 input, change 等。
<input v-on:input="onInput" type="text"> <input v-on:change="handleChange" type="text" v-model="message">
表单控件数组
当 v-model 与 v-for 结合使用时,可以创建动态表单控件数组。
<form v-for="(item, index) in items" :key="index"> <input v-model="items[index]"> </form>
表单提交
使用 v-on:submit 或 @submit 来处理表单提交事件,并阻止默认的表单提交行为。
<form @submit.prevent="onSubmit"> <!-- form 元素 --> </form>
表单验证
Vue 提供了简单的表单验证功能,通过使用 prop 属性和 required, type 等 HTML5 验证属性。
<input v-model="username" type="text" required>
计算属性和侦听器
使用计算属性和侦听器来响应数据的变化,实现复杂的表单逻辑。
computed: {
isFormValid() {
return this.username.trim().length > 0;
}
}自定义组件
通过创建自定义表单控件组件,可以扩展 v-model 的功能。
// 在自定义组件中
model: {
prop: 'value',
event: 'change'
},
props: ['value'],
methods: {
updateValue(event) {
this.$emit('change', event.target.value);
}
}完整示例
<!DOCTYPE html>
<html>
<head>
<title>Vue 表单示例</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head>
<body>
<div id="app">
<h2></h2>
<form @submit.prevent="submitForm">
<div>
<label for="name">登录账号:</label>
<input type="text" id="name" v-model="formData.name" required>
</div>
<div>
<label for="email">邮箱地址:</label>
<input type="email" id="email" v-model="formData.email" required>
</div>
<div>
<label for="hobby">个人爱好:</label>
<textarea id="hobby" v-model="formData.hobby" rows="4" cols="30" required></textarea>
</div>
<button type="submit">提交</button>
</form>
<div v-if="submitted">
<h3>提交成功!</h3>
<p>登录账号: {{ formData.name }}</p>
<p>邮箱地址: {{ formData.email }}</p>
<p>个人爱好: {{ formData.hobby }}</p>
</div>
</div>
<script>
new Vue({
el: '#app',
data: {
formData: {
name: '',
email: '',
hobby: ''
},
submitted: false
},
methods: {
submitForm() {
// 在真实应用中,这里可以发送表单数据到后端或者执行其他提交逻辑
console.log('Form submitted with:', this.formData);
// 提交成功后,设置 submitted 为 true,显示提交成功的信息
this.submitted = true;
}
}
});
</script>
</body>
</html>Vue 的表单处理功能使得开发者能够轻松创建用户友好和响应式的表单,同时保持数据的同步和验证逻辑的清晰。