--- title: 【SearchPanel组件】下拉联想结果的全局监听click事件技术实现 description: 写SearchPanel组件时实现下拉联想结果点击外部自动关闭,同时用了全局click事件监听来代替常用的onBlurSuggest逻辑 date: 2025-02-14T01:31:00+08:00 slug: 下拉联想 categories: - 实习小记 - 奇技淫巧 tags: [ "Vue", "前端", "JavaScript" ] lastmod: 2025-02-14T02:58:00+08:00 links: - title: 【SearchPanel组件】详细配置文档 description: SearchPanel是一个基于Vue的搜索组件,包含各类搜索项和搜索结果表格,支持响应式数据更新 website: /post/实习小记/searchpanel组件文档/ --- 给公司写Vue组件时,需要实现一个下拉联想结果,这个下拉联想结果是根据用户输入内容实时调用API获取的,当用户输入内容时,下拉联想结果会自动弹出。自然地,如果用户点击了其他地方,下拉联想结果应该自动关闭,以保证用户体验。 其实一开始我用的是常用的`onBlurSuggest`实现,但是发现有时候点击外部没办法正确隐藏联想结果,分析了一下发现`blur`事件可能在`focus`事件之后触发,所以无法实现点击外部自动关闭。 所以我换了种方案,对于输入框和联想结果,我分别加了`ref`来标识两个组件,方便后面检查点击事件时进行定位。输入框: ```html ``` 联想结果: ```html
{{ col.label }} |
---|
|