【发布时间】:2020-06-22 17:32:47
【问题描述】:
我在一个带有列表输出的数组中进行了搜索。在列表中需要选择一个产品。鼠标单击事件添加所选项目。然后它被添加到另一个数组中,然后我们已经在使用它了。
一切都完美!
但我需要添加使用键盘键 Up、Down 和 Enter 进行选择的功能。
我可以使用事件“v-on:keyup.up”“v-on:keyup.down”“v-on:keyup.enter”,但是在方法里面做什么呢?
需要:使用向下和向上键,选择所需的项目,该项目使用“活动”类突出显示。 当按下 Enter 时,元素 id 值被传递给方法。 怎么做?
模板:
<input class="form-control col-sm-4" type="text" v-model="searchGoods" placeholder="Search">
<div v-if="searchGoods">
<ul class="col-sm-4 list-group" v-if="goodsList.length">
<li v-for="item in searchQuery" class="list-group-item list-group-item-action" @click="addGoods(item.id)">{{item.name}}</li>
</ul>
</div>
JS:
data () {
return {
goodsList: [
{ id: '1', name: 'Cheese 1' },
{ id: '3', name: 'Cheese 2' },
{ id: '4', name: 'Cheese 3' },
{ id: '5', name: 'Meat' },
{ id: '7', name: 'Tomato' },
{ id: '11', name: 'Sauce' },
],
searchGoods: ''
}
},
computed: {
searchQuery: function(){
if (this.searchGoods){
return this.goodsList.filter((item)=>{
return this.searchGoods.toLowerCase().split(' ').every(v => item.name.toLowerCase().includes(v))
})}
else{
return this.goodsList;
}
},
},
methods: {
addGoods(id){
let goods=this.goodsList.find(item => item.id == id);
this.products.push({
id: id,
goods_name: goods.name
});
this.searchGoods='';
},
}
尝试输入“Chee”,我们在 HTML 上看到的内容:
<div>
<input type="text" placeholder="Search" class="form-control col-sm-4">
<div>
<ul class="col-sm-4 list-group">
<li class="list-group-item list-group-item-action">Cheese 1</li>
<li class="list-group-item list-group-item-action">Cheese 2</li>
<li class="list-group-item list-group-item-action">Cheese 3</li>
</ul>
</div>
</div>
【问题讨论】:
标签: vue.js