Раньше я использовал следующий код, чтобы перехватить событие ввода ключа пользователя и автоматически выбрать первый результат из результатов автозаполнения (pac-элементов), если пользователи не выбрали ни один из них (т. Е. Нет pac-элементов).помечен как pac-item-selected).
var input = document.getElementById('pac-input')
var autocomplete = new google.maps.places.Autocomplete(input)
google.maps.event.addDomListener(input, 'keypress', function(e) {
if (e.keyCode===13 && !e.triggered) {
var suggestion_selected = document.querySelectorAll('.pac-item-selected').length > 0
if (!isLatLngInInputBox && !suggestion_selected) {
google.maps.event.trigger(this,'keydown',{keyCode:40})
google.maps.event.trigger(this,'keydown',{keyCode:13,triggered:true})
}
}
})
Однако при запуске из Google Maps JavaScript API v3.35 я получаю сообщение об ошибке типа Uncaught TypeError: a.stopPropagation is not a function
в строке google.maps.event.trigger(this,'keydown',{keyCode:40})
.
В результате я проверил документацию и заметил, что метод триггера google.maps.event изменился.Третий аргумент теперь обозначается как eventArgs, а не как var_args.
Я попытался выяснить, как адаптироваться к нему, и изменил код следующим образом:
google.maps.event.addDomListener(input, 'keypress', function(e) {
console.log(e.key)
if (e.key==="Enter" && !e.triggered) {
var suggestion_selected = document.querySelectorAll('.pac-item-selected').length > 0
if (!isLatLngInInputBox && !suggestion_selected) {
google.maps.event.trigger(this,'keydown',{key:"ArrowDown"})
google.maps.event.trigger(this,'keydown',{key:"Enter",triggered:true})
}
}
})
Хотя можно ввести клавишу Enterотлично, клавиша ArrowDown не работает должным образом.
На самом деле, я могу захватить клавишу ArrowDown с помощью console.log(e.key)
, но на самом деле ничего не происходит.Кроме того, console.log(e.key)
ничего не ловит, когда я нажимаю клавишу ArrowDown на клавиатуре, что меня очень смущает.
Кто-нибудь сталкивался с подобной проблемой?Спасибо за любое предложение!