Таким образом, я использую API Google Maps для заполнения некоторой информации на сервере, но если пользователь не «нажимает» на опцию выпадающего меню, сервер никогда не заполняется данными.
Я нашел обходной путь переполнения стека: ссылка , но при размытии / фокусировке ничего не срабатывает.
let address = document.getElementById('inputAddress');
(function pacSelectFirst(input) {
// store the original event binding function
var _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" || type == 'blur') {
var orig_listener = listener;
listener = function(event) {
var suggestion_selected = $(".pac-item-selected").length > 0;
// if [enter] or [tab] is pressed
if ((event.which == 13 || event.which == 9) && !suggestion_selected) {
var simulated_downarrow = $.Event("keydown", {
keyCode: 40,
which: 40
});
orig_listener.apply(input, [simulated_downarrow]);
}
orig_listener.apply(input, [event]);
};
}
_addEventListener.apply(input, [type, listener]);
}
input.addEventListener = addEventListenerWrapper;
input.attachEvent = addEventListenerWrapper;
var autocomplete = new google.maps.places.Autocomplete(input);
})(address);
Я понимаю, что делает код. Когда вы нажимаете вкладку или вводите, он имитирует нажатие стрелки вниз. Я попытался добавить в слушателя для размытия, но ничего не работает. Событие по-прежнему запускается, но оно не выбирается и не обновляется.
Хотелось бы помочь с этой ситуацией. Спасибо!