当前位置:首页 > VUE

vue实现搜索下拉

2026-02-17 04:52:51VUE

Vue 实现搜索下拉功能

搜索下拉功能通常结合输入框和下拉列表,实现实时搜索和选择。以下是基于 Vue 的实现方法。

基本结构

使用 Vue 的 v-model 绑定输入框,监听输入变化触发搜索逻辑。

<template>
  <div class="search-dropdown">
    <input 
      v-model="searchText" 
      @input="handleInput" 
      @focus="showDropdown = true"
      placeholder="输入搜索内容"
    />
    <ul v-show="showDropdown && filteredItems.length > 0">
      <li 
        v-for="item in filteredItems" 
        :key="item.id" 
        @click="selectItem(item)"
      >
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

数据与逻辑

定义搜索文本、下拉列表状态和过滤逻辑。

<script>
export default {
  data() {
    return {
      searchText: '',
      showDropdown: false,
      items: [
        { id: 1, name: '选项1' },
        { id: 2, name: '选项2' }
      ],
      filteredItems: []
    }
  },
  methods: {
    handleInput() {
      this.filteredItems = this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchText.toLowerCase())
      );
    },
    selectItem(item) {
      this.searchText = item.name;
      this.showDropdown = false;
    }
  }
}
</script>

样式优化

添加基础样式提升用户体验。

<style scoped>
.search-dropdown {
  position: relative;
  width: 200px;
}
input {
  width: 100%;
  padding: 8px;
}
ul {
  position: absolute;
  width: 100%;
  border: 1px solid #ccc;
  max-height: 200px;
  overflow-y: auto;
  margin: 0;
  padding: 0;
  list-style: none;
  background: white;
}
li {
  padding: 8px;
  cursor: pointer;
}
li:hover {
  background: #f0f0f0;
}
</style>

高级功能扩展

  • 防抖处理:减少频繁搜索请求,使用 lodash.debounce
  • 异步搜索:通过 API 获取搜索结果,结合 axiosfetch
  • 键盘导航:监听键盘事件实现上下选择。
import debounce from 'lodash.debounce';

export default {
  methods: {
    handleInput: debounce(function() {
      this.filterItems();
    }, 300)
  }
}

通过以上步骤,可以实现一个基础的 Vue 搜索下拉功能,并根据需求扩展高级特性。

vue实现搜索下拉

标签: vue
分享给朋友:

相关文章

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-contain…

vue实现递归

vue实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论列表、文件目录等)。以下是具体实现方法: 定义递归组件 通过 name 选项让组件可以递归调用自身:…

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-co…

vue实现截图

vue实现截图

Vue 实现截图的方法 使用 html2canvas 库 安装 html2canvas 库: npm install html2canvas 在 Vue 组件中使用: import html2…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…

vue实现xss

vue实现xss

XSS 攻击简介 XSS(跨站脚本攻击)是一种常见的安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,脚本会在其浏览器中执行,可能导致数据泄露或会话劫持。 Vue 中的 XSS…