Подтвердить что ты не робот

Как сказать, когда предложение google не задано автозаполнением?

Краткая версия:

Я использую автозаполнения google из библиотеки Google Places (здесь https://developers.google.com/maps/documentation/javascript/places), и мне нужно указать, когда пользователь выбрал место из авто -полный список и когда они щелкнули в другом месте, внесли вкладки и т.д.

Моя цель - запустить функцию, когда пользователь взаимодействует с элементом ввода, но не выбирает вариант автозаполнения.

Подробнее:

При просмотре документации появляется одно событие, когда (действительно, если) места меняются, что происходит после (потенциально длинного) маршрута в оба конца. Если пользователь ничего не выбирает из списка, это событие никогда не запускается. (Документы в https://developers.google.com/maps/documentation/javascript/reference?hl=fr#Autocomplete)

Я могу прикрепить прослушиватель к событию размытия для входного элемента, к которому присоединяется автозаполнение, но проблема в том, что событие размытия происходит задолго до события places_changed.

До сих пор пробовали ряд вещей, включая прослушивание событий в предложениях автозаполнения с помощью следующего:

$('body').on('click', '.pac-item', function(){alert.log('yay!');});

библиотека google, по-видимому, ест события.

Любая помощь будет принята с благодарностью.

Спасибо!

4b9b3361

Ответ 1

Вместо того, чтобы использовать событие для проверки, вы должны проверить, отправляется ли форма. Здесь это шаг за шагом:

  • Когда пользователь выбирает место, сохраните место И текстовое значение ввода
  • Когда форма отправляется, проверьте, совпадает ли значение ввода с сохраненным вами
  • Если он отличается или нет места, сохраненного, затем выполните запрос ручных мест

Демо: http://jsfiddle.net/robertdodd/FSRd8/7/

Я собрал небольшую демонстрацию выше. То, что я сделал, - это приложить метод проверки к форме. Этот метод проверяет данные перед отправкой формы и, если требуется, сначала выполняет поиск вручную.

function validateForm() {
    searchfield = $('#searchfield').val();
    if (searchfield == "" || searchfield == null) { 
        // No text entered
    } else if (place && searchfield == placesearch) { 
        // Success
        return true;
    } else { 
        // place info and search text do not match, perform manual lookup   
        // when lookup is complete, the callback function will store the place info
        // and resubmit the form
    }
    return false;
}

Это всего лишь контур того, что происходит, весь код находится в демо, если вы хотите его увидеть.

Надеюсь, это поможет вам!