Chrome для Android показывает автозаполнение, даже если автозаполнение: выключено

У меня есть форма с 4 полями, в которых пользователь должен ввести два города (From и To) и две даты (исходящая и дата возврата).

У меня есть autocomplete:off, который отлично подходит для большинства браузеров. Однако для Chrome на Android я получаю раздражающее автозаполнение, которое перекрывает список моих собственных предложений.

Снимок экрана с автозаполнением

Испытания

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

1) Поместите скрытое поле перед моими полями в форме. Даже с тем же именем, что и первое реальное поле:

<input type="text" style="display:none" name="same_name_as_1st_field"/>

2) Сжатие div вместо входного тега напрямую:

<div style="display: none;">
    <input type="text" name="same_name_as_1st_field" />
</div>

3) Изменение от autocomplete="off" до autocomplete="false"

4) Автозаполнение браузера в режиме readonly.

<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

5) autocomplete="new-password"

6) <form autocomplete="off" role="presentation">

7) С помощью JQuery:

if ($.browser.webkit) {
    $('input[name="my_field_name"]').attr('autocomplete', 'off');
}

8) JQuery:

$(window).ready(function () {
    $('#my_id').val(' ').val('');
});

9) Более сложный JQuery из здесь:

jQuery('body').on('mousedown keydown','[name="name"][autocomplete="off"],
[name="email"][autocomplete="off"]',function(e){
    e.stopImmediatePropagation();
    if(typeof this.currentName =="undefined")
        this.currentName=jQuery(this).attr('name');
    jQuery(this).attr('name','');
});
jQuery('body').on('blur keyup','[autocomplete="off"]',function(e){
    e.stopImmediatePropagation();
    if(typeof this.currentName !="undefined")
        jQuery(this).attr('name',this.currentName);
});

Обратите внимание, что для решений 1 и 2 я просто взял случаи, когда   имя входа - "имя" и "электронная почта". Для любого другого случая, когда это   атрибут заставляет Chrome генерировать раскрывающееся меню, вам придется добавить его   в селекторе для события мыши.

10) Собственная идея: я понял, что, указав поле по умолчанию, автозаполнение не появляется. Затем я попытался дать значение по умолчанию и очистить это значение в фокусе с помощью javascript...

<script>
    $('#id_From').focus(function() {
        this.value = "";
    });
</script>

И никто не работает.

Любая идея о том, как решить эту проблему?

Ответ 1

Наконец, решение, которое работало от здесь:

Он удаляет атрибуты "имя" и "id" из элементов и назначает их назад после 1 мс. Поместите это в документ, чтобы подготовиться.

$(document).ready(function() {
    $('form[autocomplete="off"] input, input[autocomplete="off"]').each(function () {

                var input = this;
                var name = $(input).attr('name');
                var id = $(input).attr('id');

                $(input).removeAttr('name');
                $(input).removeAttr('id');

                setTimeout(function () {
                    $(input).attr('name', name);
                    $(input).attr('id', id);
                }, 1);
            });
});