События клавиатуры
selectOnKeyCodes
selectOnKeyCodes {Array}
- это массив кодов клавиш, который запускает typeahead select. Любые коды клавиш в этом массиве предотвратят действие события по умолчанию и запустят typehead select. По умолчанию для возврата используется просто [13]. Например, возможно, вы хотите пометить нажатие клавиши с запятой:
selectOnKeyCodes {Array}
- это массив кодов клавиш, которые инициируют выбор элемента при использовании функции typeAhead. Любой код клавиши из этого массива прервет стандартное действие события и вызовет выбор элемента с использованием функции typeAhead. По умолчанию установлен только [13]
для клавиши Enter. Например, если вам необходимо добавить выбор при нажатии запятой, необходимо добавить код этой клавиши:
<template>
<!-- tag on 188/comma & 13/return -->
<v-select no-drop taggable multiple :select-on-key-codes="[188, 13]"/>
</template>
mapKeyDown
Vs Vue3 Select предоставляет параметр map-keydown
, позволяющий настраивать реакцию компонентов на события нажатия клавиш, в то время как строка поиска имеет фокус.
/**
* @param map {Object} Сопоставление keyCode и обработчиков { <keyCode>:<callback> }
* @param vm {VueSelect}
* @return {Object}
*/
(map, vm) => map,
По умолчанию параметр – это заглушка, возвращающий тот же объект, который он получает. Этот объект сопоставляет коды ключей обработчикам: { <keyCode>: <callback> }
. Изменение этого объекта может переопределить функциональность по умолчанию или добавить обработчики для разных ключей, которые компонент обычно не прослушивает.
Обратите внимание, что любые коды клавиш, которые вы добавили в selectOnKeyCodes
, также будут переданы в map-keydown
, поэтому map-keydown
всегда будет иметь приоритет
Обработчики по умолчанию
// delete
8: e => this.maybeDeleteValue()
// enter
13: e => {
e.preventDefault();
return this.typeAheadSelect();
}
// esc
27: e => this.onEscape()
// up
38: e => {
e.preventDefault();
return this.typeAheadUp();
}
// down
40: e => {
e.preventDefault();
return this.typeAheadDown();
}
Пример: Автозавершение email адреса
Этот пример показывает как при нажатии клавиши @
происходит автодополнение адреса строкой @gmail.com
.
<template>
<v-select
taggable
multiple
no-drop
:map-keydown="handlers"
placeholder="enter an email"
/>
</template>
<script setup>
const handlers = (map, vm) => ({
...map,
50: (e) => {
e.preventDefault()
if (e.key === '@' && vm.search.length > 0) {
vm.search = `${vm.search}@gmail.com`
}
},
})
</script>