当前位置:首页 > VUE

vue实现input输入提示

2026-02-23 04:23:05VUE

Vue 实现 Input 输入提示的方法

使用 v-model 和计算属性

通过 v-model 绑定输入框的值,结合计算属性或方法实现输入提示功能。计算属性可以监听输入变化并返回匹配的提示列表。

<template>
  <div>
    <input v-model="inputValue" @input="handleInput" />
    <ul v-if="suggestions.length">
      <li v-for="(item, index) in suggestions" :key="index" @click="selectSuggestion(item)">
        {{ item }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: '',
      allItems: ['Apple', 'Banana', 'Orange', 'Mango'],
      suggestions: []
    }
  },
  methods: {
    handleInput() {
      this.suggestions = this.allItems.filter(item =>
        item.toLowerCase().includes(this.inputValue.toLowerCase())
      )
    },
    selectSuggestion(item) {
      this.inputValue = item
      this.suggestions = []
    }
  }
}
</script>

使用第三方库 vue-autosuggest

vue-autosuggest 是一个专门为 Vue 设计的自动完成组件,提供更丰富的功能和配置选项。

安装依赖:

npm install vue-autosuggest

使用示例:

<template>
  <vue-autosuggest
    :suggestions="filteredOptions"
    :input-props="{ placeholder: 'Search...' }"
    @input="onInputChange"
    @selected="onSelected"
  >
    <template #suggestion="{ suggestion }">
      {{ suggestion.item }}
    </template>
  </vue-autosuggest>
</template>

<script>
import { VueAutosuggest } from 'vue-autosuggest'

export default {
  components: {
    VueAutosuggest
  },
  data() {
    return {
      suggestions: [],
      allOptions: ['Red', 'Green', 'Blue', 'Yellow']
    }
  },
  computed: {
    filteredOptions() {
      return [
        {
          data: this.suggestions
        }
      ]
    }
  },
  methods: {
    onInputChange(text) {
      this.suggestions = this.allOptions.filter(option =>
        option.toLowerCase().includes(text.toLowerCase())
      )
    },
    onSelected(item) {
      console.log('Selected:', item)
    }
  }
}
</script>

使用 Element UI 的 Autocomplete 组件

如果项目中使用 Element UI,可以直接使用其提供的 Autocomplete 组件实现输入提示功能。

安装 Element UI:

npm install element-ui

使用示例:

<template>
  <el-autocomplete
    v-model="inputValue"
    :fetch-suggestions="querySearch"
    placeholder="请输入内容"
    @select="handleSelect"
  />
</template>

<script>
export default {
  data() {
    return {
      inputValue: '',
      items: ['JavaScript', 'TypeScript', 'Vue', 'React']
    }
  },
  methods: {
    querySearch(queryString, cb) {
      const results = queryString
        ? this.items.filter(item =>
            item.toLowerCase().includes(queryString.toLowerCase())
          )
        : this.items
      cb(results)
    },
    handleSelect(item) {
      console.log(item)
    }
  }
}
</script>

自定义指令实现输入提示

对于需要更高度定制化的场景,可以创建自定义指令来实现输入提示功能。

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

<script>
export default {
  directives: {
    inputSuggest: {
      bind(el, binding, vnode) {
        el.addEventListener('input', () => {
          const value = el.value
          const suggestions = binding.value
          // 实现提示逻辑
        })
      }
    }
  },
  data() {
    return {
      inputValue: '',
      suggestions: ['Option 1', 'Option 2', 'Option 3']
    }
  }
}
</script>

使用 Vue 3 Composition API

在 Vue 3 中,可以使用 Composition API 更灵活地实现输入提示功能。

vue实现input输入提示

<template>
  <input v-model="inputValue" @input="updateSuggestions" />
  <ul v-if="suggestions.length">
    <li v-for="(item, index) in suggestions" :key="index" @click="selectItem(item)">
      {{ item }}
    </li>
  </ul>
</template>

<script>
import { ref, computed } from 'vue'

export default {
  setup() {
    const inputValue = ref('')
    const allItems = ['Vue', 'React', 'Angular', 'Svelte']
    const suggestions = ref([])

    const updateSuggestions = () => {
      suggestions.value = allItems.filter(item =>
        item.toLowerCase().includes(inputValue.value.toLowerCase())
      )
    }

    const selectItem = item => {
      inputValue.value = item
      suggestions.value = []
    }

    return {
      inputValue,
      suggestions,
      updateSuggestions,
      selectItem
    }
  }
}
</script>

以上方法提供了不同复杂度和定制化程度的实现方案,可以根据项目需求选择最适合的方式。

标签: 提示vue
分享给朋友:

相关文章

vue实现点击页面切换

vue实现点击页面切换

实现点击页面切换功能 在Vue中实现点击页面切换功能,可以通过路由跳转或组件动态渲染两种方式完成。以下是具体实现方法: 使用Vue Router实现页面跳转 安装Vue Router后,在项目中配置…

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue 实现滑动

vue 实现滑动

Vue 实现滑动效果的方法 在Vue中实现滑动效果可以通过多种方式,以下是几种常见的方法: 使用CSS过渡和动画 通过Vue的<transition>组件结合CSS过渡或动画实现滑动效果…

vue实现单击

vue实现单击

Vue 实现单击事件的方法 在 Vue 中实现单击事件可以通过 v-on 指令或简写的 @ 符号绑定事件处理器。以下是几种常见的实现方式: 基础用法 通过 v-on:click 或 @click 绑…

vue实现计数

vue实现计数

Vue 实现计数功能 在 Vue 中实现计数功能可以通过多种方式完成,以下是几种常见的方法: 使用 Vue 数据绑定和事件监听 通过 Vue 的数据绑定和事件监听,可以轻松实现计数功能。以下是一个简…