Google Map API - переопределить слушателя place_changed - PullRequest
0 голосов
/ 05 ноября 2018

Мой вопрос является продолжением этого вопроса: Google Autocomplete API - формат вывода результата

Представленное решение работает с одной проблемой. Если вы сфокусировались, а затем размыли событие, не выбрав ни одного из мест в раскрывающемся списке, цвет входного текста останется белым.

Я пытался избежать события размытия, поэтому я решил поместить все событие окраски в слушатель place_changed следующим образом:

google.maps.event.addListener(autoComplete, 'place_changed', function () {
    var place = autoComplete.getPlace();
    el.css('color', '#fff');

    el.val(place.name);

    setTimeout(function () {
        el.blur();
        el.css('color', '');
    }, 100);
});

Кажется, это не работает, как ожидалось. Мой вопрос: есть ли способ предотвратить заполнение ввода автоматически после выбора места?


EDIT

Еще одна вещь, которую я пытался выяснить, было ли изменено входное значение, путем сохранения значения при фокусировке и проверки при размытии, например:

el.bind('blur', function () {
    if (el.data('oldValue') != el.val())
        el.css('color', '#fff');
});

el.bind('focus', function () {
    el.data('oldValue', el.val());
});

Это прекрасно работает, пока вы не попытаетесь найти более короткий адрес, а затем выберете более длинный, например, поиск «Jaars» (страна США), затем сфокусируйтесь на том же вводе и выберите «Jaars Road», текст будет мигать.

...