当前位置:首页 > VUE

vue实现监听input变化

2026-02-24 03:01:28VUE

Vue 监听 input 变化的方法

在 Vue 中监听 input 元素的变化可以通过多种方式实现,以下是几种常见的方法:

使用 v-modelwatch

v-model 是 Vue 提供的双向数据绑定指令,结合 watch 可以监听数据变化。

<template>
  <input v-model="inputValue" />
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    }
  },
  watch: {
    inputValue(newVal, oldVal) {
      console.log('Input changed from', oldVal, 'to', newVal);
    }
  }
}
</script>

使用 v-on:input 事件

直接监听 input 事件,可以在事件触发时执行自定义逻辑。

<template>
  <input :value="inputValue" @input="handleInput" />
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    }
  },
  methods: {
    handleInput(event) {
      this.inputValue = event.target.value;
      console.log('Input value:', this.inputValue);
    }
  }
}
</script>

使用 v-model 和自定义修饰符

Vue 允许通过 .lazy 修饰符将 input 事件改为 change 事件(失去焦点时触发)。

<template>
  <input v-model.lazy="inputValue" />
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    }
  },
  watch: {
    inputValue(newVal) {
      console.log('Input value changed (lazy):', newVal);
    }
  }
}
</script>

使用 debouncethrottle 优化频繁输入

对于高频输入场景,可以通过 debouncethrottle 减少事件触发频率。

vue实现监听input变化

<template>
  <input :value="inputValue" @input="debouncedInput" />
</template>

<script>
import { debounce } from 'lodash';

export default {
  data() {
    return {
      inputValue: ''
    }
  },
  created() {
    this.debouncedInput = debounce(this.handleInput, 500);
  },
  methods: {
    handleInput(event) {
      this.inputValue = event.target.value;
      console.log('Debounced input:', this.inputValue);
    }
  },
  beforeDestroy() {
    this.debouncedInput.cancel();
  }
}
</script>

注意事项

  • 直接使用 v-model 是最简单的方式,适合大多数场景。
  • 如果需要实时响应输入变化,优先选择 @input 事件。
  • 对于性能敏感的场景(如搜索框),建议使用 debouncethrottle 减少不必要的计算。

标签: vueinput
分享给朋友:

相关文章

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{…

vue compile 实现

vue compile 实现

Vue 编译实现原理 Vue 的编译过程将模板字符串转换为渲染函数,主要分为解析、优化和代码生成三个阶段。 解析阶段(Parse) 将模板字符串转换为抽象语法树(AST)。Vue 使用正则表达式和有…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue实现computed

vue实现computed

Vue 中 computed 的实现原理 computed 属性是 Vue 的一个核心特性,它基于响应式依赖进行缓存,仅在依赖发生变化时重新计算。以下是 computed 的实现方式: 基本用法 在…

vue实现框选

vue实现框选

Vue 实现框选功能 在 Vue 中实现框选功能通常需要监听鼠标事件,计算选区范围,并根据选区范围高亮或选中元素。以下是实现框选功能的关键步骤。 监听鼠标事件 在 Vue 模板中,为容器元素绑定鼠标…