Выберите 2 scrollIntoView перед открытием - PullRequest
0 голосов
/ 01 мая 2019

У меня проблема, связанная с использованием плагина select2 jQuery на мобильных устройствах, а именно, когда раскрывающийся список активирован и находится на низком уровне страницы, виртуальная клавиатура закрывает параметры выбора.

ИсправлениеЯ хочу прокрутить элемент select2 (на самом деле это метка выше) до верхней части страницы, прежде чем он откроется.

Я пытаюсь вызвать это при открытии select2:

.on('select2:opening', () => {
    myLabel.scrollIntoView({ behavior: 'smooth' });
})

Это происходит сбой из-за условий гонки, оно не перемещается (но происходит, если точка останова в методе scrollIntoView)

Я могу предотвратить его открытие, а затем попытаться открыть снова, как показано ниже, но, конечно, это не удается из-зачтобы вызвать переполнение стека:

.on('select2:opening', e => {
    e.preventDefault();
    myLabel.scrollIntoView({ behavior: 'smooth' });
    mySelectElement.select2('open');
})

Мой вопрос: можно ли этого добиться с помощью событий в плагине select2?

Есть ли способ отложить открытие до перемещения элементакуда мне это нужно расположить?

1 Ответ

0 голосов
/ 01 мая 2019

Поскольку вы уже используете jQuery, я бы предложил использовать метод animate :

.on('select2:opening', e => {
    $('html, body').animate({ scrollTop: $(myLabel).offset().top });
})
...