是一个类似谷歌搜索的历史记录功能,需要在input失去聚焦后关闭历史记录的显示。同时,历史记录支持删除
代码如下
<div class="miner-search">
<span class="input-box">
<input v-debounce:300ms="filterMinerList" v-model="minerName" type="text" :placeholder="$t('miner.searchMiner')" @focus="showHistory = true" @blur="showHistory = false" />
<i class="el-icon-circle-close" :style="minerName ? 'display:block' : 'display:none'" @click="filterMinerList(null)"></i>
<i class="el-icon-search"></i>
</span>
<div class="search-history" v-show="showHistory">
<p :class="hoverIndex === index ? 'history-item hover-item' : 'history-item'" v-for="(item, index) in searchList" :key="index" @mouseover="hoverIndex = index">
<i class="el-icon-time"></i>
<span @click="filterMinerList(item)">{{ item }}</span>
<el-button type="text" icon="el-icon-close" @click="delHistory(index)"></el-button>
</p>
</div>
</div>
<input>元素的@blur事件会优先触发导致子元素<el-button>的@click的delHistory无法触发。如何解决
最简单解决方法,把click改成mousedown