Какой код клавиши для Next в android virtualKeyBoard

Я усиливаю (в директиве angular), что Google помещает автозаполнение ввода, чтобы выбрать первый вариант, если ни один из них не выбран.

Я использую приведенный ниже код, который работает как шарм при использовании клавиш «tab» или «enter».

К сожалению, он не работает на устройстве Android (Chrome) с клавишей "следующий" на виртуальной клавиатуре ...

Каким может быть KeyCode для этой клавиши «next», поскольку это не «tab» (9) или «enter» (13)

selectFirstOnEnterOrTab(input) {
    // prevent submit on enter (13)
    $(input).keydown(function (e) {
      if (e.which === 13 && $('.pac-container:visible').length) {
        return false;
      }
    });

    // store the original event binding function
    const _addEventListener = (input.addEventListener) ? input.addEventListener : input.attachEvent;
    function addEventListenerWrapper(type, listener) {
      // Simulate a 'down arrow' keypress on hitting 'return' when no pac suggestion is selected,
      // and then trigger the original listener.
      if (type === 'keydown') {
        const orig_listener = listener;
        listener = function (event) {
          const suggestion_selected = $('.pac-item-selected').length > 0;
          if ((event.which >= 9 && event.which <= 13) && !suggestion_selected) {
            const simulated_downarrow = $.Event('keydown', {
              keyCode: 40, which: 40
            });
            orig_listener.apply(input, [simulated_downarrow]);
          }
          orig_listener.apply(input, [event]);
        };
      }
      _addEventListener.apply(input, [type, listener]); // add the modified listener
    }
    if (input.addEventListener) {
      input.addEventListener = addEventListenerWrapper;
    } else if (input.attachEvent) {
      input.attachEvent = addEventListenerWrapper;
    }
  }

ИЗМЕНИТЬ

Следуя предложению Питто, я зарегистрировал код и код на моем устройстве Android, и для всех клавиш, которые я нажимаю, я получаю 229, что, по-видимому, является нормальным поведением для Android. Любые идеи о том, как я могу обновить свой код, чтобы он работал и на устройстве Android ...

РЕДАКТИРОВАТЬ2

На Android при нажатии кнопки «Далее» событие keydown не запускается.


person PhoenK    schedule 24.09.2019    source источник


Ответы (2)


Можете ли вы попробовать установить минимальную страницу с помощью этого кода и посмотреть, печатает ли он правильное значение?

document.body.addEventListener("keyup", function(event) {
   console.log(event.key);
   console.log(event.code);
});

Или, что еще проще, вы можете получить коды клавиш на этом веб-сайте:
https://keycode.info

Данные клавиши табуляции для моего Samsung S10e, возвращенные https://keycode.info:

event.key = Unidentified
event.location = 0
event.which = 229
event.code = 
person Pitto    schedule 24.09.2019
comment
Что ж, спасибо за ваш ответ, обычно я думаю об этих вещах, но почему бы не об этой проблеме: O :). Во всяком случае, я зарегистрировал, какой и ключевой код, и для всех клавиш, которые я нажимаю (даже a, b, enter, ...), у меня 229 для обоих ... - person PhoenK; 24.09.2019
comment
По-видимому, это нормальное поведение для Android, но как я могу нажать Enter или Tab ... - person PhoenK; 24.09.2019

Как уже указывалось, значение для e.which / e.keyCode будет 229, а e.key будет 'Unidentified'. Вы можете проверить это с помощью https://keyjs.dev, где вы также найдете объяснение о виртуальных / мобильных клавиатурах:

При использовании виртуальной / мобильной клавиатуры, официально известной как IME (редактор метода ввода), стандарт W3C утверждает, что e.keyCode KeyboardEvent должен быть 229, а e.key должен быть Unidentified.

Лучший вариант для мобильных устройств - это, вероятно, просто добавить стрелку раскрытия / вниз в раскрывающийся список и позволить пользователям открывать его вручную, если они хотят.

person Danziger    schedule 27.09.2020