Я усиливаю (в директиве 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 не запускается.