diff --git a/app/views/location.ejs b/app/views/location.ejs index 672eb3b..1ecd9cf 100644 --- a/app/views/location.ejs +++ b/app/views/location.ejs @@ -99,6 +99,7 @@ autocomplete = new google.maps.places.Autocomplete(inputElement, initialAutocompleteParams); autocomplete.bindTo('bounds', map); autocomplete.addListener('place_changed', onPlaceChanged); + pacSelectFirst(inputElement); } function onPlaceChanged() { @@ -110,6 +111,38 @@ } } + function pacSelectFirst(input) { + // 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 originalListener = listener + listener = function (event) { + const suggestionSelected = $('.pac-item-selected').length > 0 + if (event.key == 'Enter' && !suggestionSelected) { + const simulatedDownArrow = $.Event('keydown', { + keyCode: 40, + which: 40 + }) + originalListener.apply(input, [simulatedDownArrow]) + } + + originalListener.apply(input, [event]) + } + } + + _addEventListener.apply(input, [type, listener]) + } + + input.addEventListener = addEventListenerWrapper + input.attachEvent = addEventListenerWrapper + } + $(document).ready(() => { $("#submit").click(() => { const mapBounds = map.getBounds();