Можно ли в suggestView яндекс карт как-либо автоматически устанавливать выбор на первую подсказку в списке?

Рейтинг: 0Ответов: 1Опубликовано: 01.02.2023

Поясню, о чем я говорю - допустим, пользователь вводит текст в инпут, к которому привязан suggestView из yandex api. Ему начинают выдаваться подсказки, но если нажать enter, то подсказки просто пропадут, а значение поля не изменится. Но в то же время, если навести мышку на подсказку, или выбрать ее стрелочками, то при нажатии на enter она автоматически выберется. я попытался сделать некий костыль и отлавливать каждое нажатие клавиш в инпуте и менять значнеие в state у activeIndex. Но это не работало, activeIndex сразу после смены значения заново устанавливается в null. Я решил пойти другим путем и отловить именно enter, сменив значение activeIndex, но и это не сработало, выбор не происходит я попытался даже стриггерить ивент 'select' после установки значения - все тщетно. Вот примерный код последних моих попыток

input.addEventListener('keydown', function (e) {
  if(e.code === 'Enter') {
    let activeIndex = suggestInput.state.get('activeIndex');
    if (typeof activeIndex !== 'number') {
      suggestInput.state.set('activeIndex', 0);
      suggestInput.events.fire('select')
    }
  }
})

Ответы

▲ 0

Зачем вам эмуляция выбора? Просто получайте значение первой строки саджеста и далее обрабатывайте так, как планировалось. Например копировать в строку инпута:

let input = document.getElementById('suggest')

input.addEventListener('keydown', function (e) {
  if(e.code === 'Enter') {
    input.value = suggestView.state.get('items')[0].value
  }
})