vue实现输入框
Vue 实现输入框的方法
基础输入框实现
在 Vue 中可以通过 v-model 指令实现双向数据绑定,创建一个基础的输入框:
<template>
<input v-model="inputValue" placeholder="请输入内容">
</template>
<script>
export default {
data() {
return {
inputValue: ''
}
}
}
</script>
输入框事件处理
Vue 提供了多种事件监听方式,可以处理输入框的各种交互:
<template>
<input
v-model="inputValue"
@input="handleInput"
@focus="handleFocus"
@blur="handleBlur"
@keyup.enter="handleEnter"
>
</template>
<script>
export default {
methods: {
handleInput(event) {
console.log('输入内容:', event.target.value)
},
handleFocus() {
console.log('输入框获得焦点')
},
handleBlur() {
console.log('输入框失去焦点')
},
handleEnter() {
console.log('按下了回车键')
}
}
}
</script>
输入框验证
可以结合计算属性或 watch 实现输入验证:

<template>
<input v-model="inputValue">
<p v-if="errorMessage" class="error">{{ errorMessage }}</p>
</template>
<script>
export default {
data() {
return {
inputValue: '',
errorMessage: ''
}
},
watch: {
inputValue(newVal) {
if(newVal.length < 3) {
this.errorMessage = '输入内容太短'
} else {
this.errorMessage = ''
}
}
}
}
</script>
自定义输入组件
创建可复用的自定义输入组件:
<!-- CustomInput.vue -->
<template>
<div class="custom-input">
<label>{{ label }}</label>
<input
:value="value"
@input="$emit('input', $event.target.value)"
:placeholder="placeholder"
>
</div>
</template>
<script>
export default {
props: {
value: String,
label: String,
placeholder: String
}
}
</script>
使用自定义组件:

<template>
<custom-input
v-model="username"
label="用户名"
placeholder="请输入用户名"
></custom-input>
</template>
<script>
import CustomInput from './CustomInput.vue'
export default {
components: {
CustomInput
},
data() {
return {
username: ''
}
}
}
</script>
输入框修饰符
Vue 提供了一些有用的修饰符来简化输入处理:
<template>
<!-- 自动去除首尾空格 -->
<input v-model.trim="inputValue">
<!-- 自动转为数字 -->
<input v-model.number="age" type="number">
<!-- 延迟更新(防抖) -->
<input v-model.lazy="inputValue">
</template>
表单输入绑定
多个输入框可以组合成表单:
<template>
<form @submit.prevent="handleSubmit">
<input v-model="formData.username" placeholder="用户名">
<input v-model="formData.password" type="password" placeholder="密码">
<button type="submit">提交</button>
</form>
</template>
<script>
export default {
data() {
return {
formData: {
username: '',
password: ''
}
}
},
methods: {
handleSubmit() {
console.log('提交数据:', this.formData)
}
}
}
</script>






