我在 Bootstrap 表中使用 Vue-Multiselect,与许多其他输入连续。当我在 Vue-Multiselect 中选择一个选项时,我希望我的标签顺序保持其在页面上的位置。但是,在 Safari 上,它会将选项卡位置重置为页面上的第一个元素。
考虑以下精简结构:
<template>
<b-table-simple ref="simpleTable" id="table">
<b-tbody>
<b-tr id="table" v-for="(rowItem, index) in values" :key="rowItem.id">
<b-td>
<b-textarea type="text" :value="rowItem.firstValue"></b-textarea>
</b-td>
<b-td class="editable dropdown">
<multiselect track-by="id" :label="selectLabel" :ref="column" :value="rowItem.multiSelectItem">
<div v-if="rowItem.multiSelectItem">rowItem.multiSelectItem</div>
</multiselect>
</b-td>
<b-td class="editable dropdown">
<b-textarea type="text" :value="rowItem.value"></b-textarea>
</b-td>
</b-tr>
</b-tbody>
</b-table-simple>
</template>
<script>
import Vue from 'vue';
import {BootstrapVue, BTable} from 'bootstrap-vue';
import Multiselect from 'vue-multiselect';
Vue.use(BootstrapVue, BTable);
export default {
components: {
BootstrapVue,
Multiselect,
BTable
},
data() {
return {
values: {
value: 'testData',
firstValue: '',
multiSelectItem: ['value1', 'value2', 'value3'],
},
}
}
}
</script>
在 Chrome、Edge 和 Firefox 中,单击下拉菜单,然后按 Tab 键会将用户导航到行中的第三个文本框。但是在 Safari 中,按 Tab 键会将用户导航到行中的第一个框。我相信这是因为 Vue-multiselect 触发了一个模糊事件并导致 tab-index 重置到页面的开头。
Vue-multiselect 有没有办法正确维护 Safari 中的选项卡位置?否则,有没有办法在不打开下拉菜单的情况下专注于 Vue 多选输入?