filterable在ios移动端不灵敏
时间: 2023-08-11 20:16:10 浏览: 107
`filterable` 属性开启了下拉选项的搜索过滤功能,但在 iOS 移动端可能会存在不灵敏的问题。这是因为 iOS 系统默认会延迟 `input` 事件的触发,以便用户能够输入更多的内容。如果你想要在 iOS 移动端提高 `filterable` 属性的响应速度,可以尝试在 `el-select` 组件上添加 `@keydown.enter.native.prevent` 事件,以避免系统的延迟。例如:
```html
<template>
<div>
<el-select v-model="inWarehouseName" filterable clearable @keydown.enter.native.prevent>
<el-option v-for="item in warehouseNameData" :key="item.data" :label="item.value" :value="item.value"></el-option>
</el-select>
</div>
</template>
```
这里添加了一个 `@keydown.enter.native.prevent` 事件,它会在用户按下回车键时立即触发搜索过滤。通过使用 `prevent` 修饰符,可以避免回车键的默认行为,以避免意外提交表单或其他操作。这样一来,在 iOS 移动端使用搜索过滤功能时就会更加灵敏和流畅了。另外,你还可以在 `el-select` 组件上添加 `@blur` 事件,以在失焦时立即触发搜索过滤。例如:
```html
<template>
<div>
<el-select v-model="inWarehouseName" filterable clearable @blur="handleBlur">
<el-option v-for="item in warehouseNameData" :key="item.data" :label="item.value" :value="item.value"></el-option>
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
inWarehouseName: '', // 当前选中的仓库名称
warehouseNameData: [ // 仓库名称选项数据
{ data: 1, value: '仓库1' },
{ data: 2, value: '仓库2' },
{ data: 3, value: '仓库3' },
// ...
]
}
},
methods: {
handleBlur() {
this.$nextTick(() => {
this.$refs.select.blur()
})
}
}
}
</script>
```
在这个代码中,我们添加了一个 `@blur` 事件,并在事件处理函数中调用了 `$nextTick` 方法和 `$refs` 属性。这是因为在 iOS 移动端中,如果在 `@blur` 事件中立即调用 `blur()` 方法会导致无法触发搜索过滤。因此,我们需要使用 `$nextTick` 方法等待下一次更新周期,在更新完成后再手动调用 `blur()` 方法。通过这种方式,可以在 iOS 移动端上提高搜索过滤的响应速度。
阅读全文