html - бесплатно - google maps api примеры



Chrome Autofill покрывает автозаполнение для Google Maps API v3 (7)

Временное решение:

$('#Name').on('mouseup keyup', function () {
        var val = $('#Name').val();
        val = val.length;
        if (val === 0) {
            $('#Name').attr('autocomplete', 'on');
        }
        else {
            $('#Name').attr('autocomplete', 'new-password');
        }
    }).on('mousedown keydown', function () {
        var val = $('#Name').val();
        var length = val.length;
        if (!length) {
            $('#Name').attr('autocomplete', 'new-password');
        }
    })

Я использую Google Maps Javascript v3 для настройки автозаполнения в поле ввода HTML следующим образом:

http://imgur.com/Rm6X2FI.png - (без автозаполнения)

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

http://imgur.com/7a2QM7L.png - (с автозаполнением)

Я нашел решение в сети пару месяцев назад (см .: Отключение автозаполнения Chrome ), но похоже, что это решение больше не имеет никакого эффекта.

<input type="text" name="address" id="address_fake" autocomplete="off" style="display:none">
<input type="text" name="address" id="address" autocomplete="off" placeholder="Address" />

Можно ли как-то остановить отображение автозаполнения в Chrome в верхней части списка автозаполнения Карт Google?

РЕДАКТИРОВАТЬ: остановить Google Chrome автозаполнение ввода не обеспечивает решение моей текущей проблемы. Проблема связана с раскрывающимся списком автозаполнения Chrome в поле ввода, а не с тем, что поле ввода автоматически заполняется значением автозаполнения.


Answer #1

Для меня я вставил строку во время выполнения в середине идентификатора поля ввода и имени поля формы, которое было заменено идентификатором сеанса текущего сеанса пользователя. Идентификатор сеанса настолько близок, насколько каждый может получить уникальный для каждого пользователя и сеанса.

Короче говоря, то, что раньше было полем с именем "cust_address", стало "cust_a734ohljehgto87y34hpwy9pho3ghseddress", так же как и идентификатор поля. Мой код ввода текстового поля выглядел так:

'<input type=text name="cust_a%sessionid%ddress" id="cust_a%sessionid%ddress" value="" autocomplete="new-password">'

Для дополнительных мер предосторожности я добавил autocomplete = "new-password", который, кажется, работает для других полей, но не для адреса, хотя, кажется, он иногда срабатывает, и я не определился, что вызывает его сбой или работу (пока) ...

Когда мой пользователь запрашивает форму, я загружаю ее в переменную в PHP и заменяю все экземпляры% sessionid% идентификатором сеанса текущего сеанса пользователя, а затем выводю его в браузер.

До сих пор это работало как прелесть, но моя система все еще находится на стадии бета-тестирования, поэтому Chrome не контролировал тысячи входов, чтобы Chrome мог понять логику и обойти ее - надеюсь, они не тратят слишком много времени на обход эти исправления, особенно с учетом того, что GOOGLES OWN SYSTEM переопределяет GOOGLES OWN SYSTEM с автозаполнением, переопределяя автозаполнение из API календарных мест!


Answer #2

Используйте autocomplete = "new-password" для поля ввода, для которого вы хотите отключить автозаполнение. Google Chrome преднамеренно игнорирует autocomplete = "off | false", но если вы установите "новый пароль", то он игнорирует автозаполнение.

Также проверьте Google Places API способ обработки автозаполнения, в идеале это должен быть подход для реализации: https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform


Answer #3

Мне удалось исправить эту проблему для Chrome 69, изменив местозаполнитель ввода.

У меня было 2 входа, привязанных к автозаполнению Google Адресов. Как только вы щелкнете по полю, автозаполнение отобразится с предложениями автозаполнения. У меня также была настройка прослушивателя для изменения атрибута «автозаполнение» ввода на что-то случайное, например «no-google-autofill». Это работало хорошо, пока я не обновился до Chrome 69.

В конце концов, я исправил это, изменив местозаполнитель ввода с «Почтовый индекс» на «Площадь». По-видимому, автозаполнение было вызвано из-за заполнителя. Иногда Chrome пытается быть слишком умным для своего же блага.


Answer #4

Решение jQuery:

$('#address').focus(function() {
    $(this).attr('autocomplete', 'new-password');
});

Answer #5

Это сводило меня с ума. Есть такая же проблема. Мы используем сценарии для извлечения значений полей, из которых пользователь может выбирать, и НЕ хотим, чтобы браузер автоматически что-либо испортил. Похоже, Chrome - это последняя версия (последняя версия 42.0.2311.135 м), Firefox (FF), с которой мы можем работать.

Итак, мы имеем дело с autocomplete браузера и autocomplete Chrome. Если я добавлю: <form autocomplete = "off"> вверху, это остановит автозаполнение в FF и Chrome, но не в автозаполнении в Chrome. Изменение «выкл» на «ложь» ничего не делает ни для одного браузера. Решена проблема с FF, но не с Chrome, так как она показывает уродливое поле AUTOFILL над содержимым.

Если вы добавляете autocomplete = "off" в каждое из полей по отдельности, то снова работает в FF, но для полей ввода, имеющих этот атрибут, автозаполнение в Chrome отключено, но автозаполнение по-прежнему вызывает уродливую голову.

Теперь странным является то, что если вы измените значение в отдельном поле ввода с «выкл» на «ложь», то, похоже, он встряхнет Chrome, и для поля, у которого этот параметр установлен на autocomplete = «false», вы увидите ТОЛЬКО значения автозаполнения (если что-либо было введено в поле ранее) и все остальные поля ввода ничего не показывают! Вы также можете установить для этого значения значение no или xx или что-либо еще, и оно выглядит как Chrome barfs для недопустимого значения для автозаполнения, и форма странно реагирует. Если у вас есть 5 полей и вы установили это для третьего поля, то поля 1, 2, 4 и 5 не заполнены, но в поле 3 отображается автозаполнение.

Это пример для копирования и работы с ним (попробуйте переместить атрибут autocomplete в разные поля и посмотреть, как он реагирует):

<!DOCTYPE html>
<html>

<head>
  <title>Signup</title>
</head>

<body>
  <form autocomplete="off" method="post">
    First name:
    <input name="Firstname" type="text">
    <br />Last name:
    <input name="Lastname" type="text" style="width: 124px">
    <br />Address:
    <input autocomplete="false" name="Address" type="text" style="width: 383px">
    <br />Phone number:
    <input name="Phone" type="text">
    <br />E-mail:
    <input name="Email" type="text" style="width: 151px">
    <br />
    <input type="submit">
  </form>
</body>

</html>

Мое решение отключить автозаполнение и автозаполнение Chrome (вы должны иметь возможность поместить скрытое поле ввода вверху или внизу под отправкой). Добавьте это <input autocomplete = "false" name = "hidden" type = "text" style = "display: none;"> в код:

<!DOCTYPE html>
<html>

<head>
  <title>Signup</title>
</head>

<body>
  <form autocomplete="off" method="post">
    <input autocomplete="false" name="hidden" type="text" style="display:none;">
    <br />First name:
    <input name="Firstname" type="text">
    <br />Last name:
    <input name="Lastname" type="text" style="width: 124px">
    <br />Address:
    <input name="Address" type="text" style="width: 383px">
    <br />Phone number:
    <input name="Phone" type="text">
    <br />E-mail:
    <input name="Email" type="text" style="width: 151px">
    <br />
    <input type="submit">
  </form>
</body>

</html>

Итог: Chrome придерживается autocomplete = off, но проблема заключается в автозаполнении Chrome. Надеюсь это поможет.


Answer #6

попробуйте добавить это в ваш файл CSS:

.pac-container{
    display:none!important;
}




google-maps-api-3