Наконец выяснилось, как это сделать (ref не работает для меня) :
ШАГ 1: Я фокусировался на неправильном элементе.
Таким образом, элемент vue-multiselect структурирован таким образом (сокращение только для отображения важных частей):
multiselect
Обычно вы хотите поместить свой tabindex
вход, вместо этого вы должны поместить его в родительский класс multiselect
. Это также касается таких вещей, как jQuery focus()
. Так...
Нет: $('.multiselect input').focus()
Да: $('.multiselect').focus()
ШАГ 2: Исправление tabindex.
Другая проблема заключается в том, что vue-multiselect ставит tabindex="-1"
на все .multiselect
элементы. Это удаляет их из естественного порядка tabindexes, поэтому вам нужно переназначить все tabindexes:
В смонтированном и обновленном (если необходимо) коде необходимо переназначить все tabindexes:
mounted: function() {
$(document).ready(()=>{
// you may need to delete all tabindexes first.
$('[tabindex]').each( (i,v) => {
$(v).removeAttr('tabindex');
return true;
});
// add new tabindexes
$('input, textarea, button').each(( i,v ) => {
var isMultiSelect = $(v).hasClass('multiselect__input');
if(isMultiSelect){
$(v).parents('.multiselect:first').attr('tabindex', i + 1);
else{
$(v).attr('tabindex', i + 1);
}
});
});
}