当前位置:首页 > VUE

vue实现输入框

2026-02-24 16:37:29VUE

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>

表单输入绑定

多个输入框可以组合成表单:

vue实现输入框

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

标签: 输入框vue
分享给朋友:

相关文章

vue实现分页

vue实现分页

Vue实现分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,可以快速实现分页功能。 <template> &…

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncComp…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

vue路由实现

vue路由实现

Vue 路由实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的基本实现步骤和核心功能。 安装 Vue Router 通过…

vue环境实现

vue环境实现

Vue 环境搭建 安装 Node.js 和 npm Node.js 是运行 Vue 的基础环境,npm 是包管理工具。从 Node.js 官网 下载并安装最新稳定版本。安装完成后,在终端运行以下命令验…

vue实现通讯

vue实现通讯

Vue 组件通讯方法 父子组件通讯 父组件向子组件传递数据通过 props,子组件向父组件传递数据通过 $emit 事件。 父组件模板: <child-component :message=…