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

Отключить автозаполнение Firefox

Можно ли отключить функцию автозаполнения Firefox Firefox без отключения автозаполнения?

Я знаю, что могу это сделать:

autocomplete="off"

Но я не хочу отключать автозаполнение, просто автозаполнение.

Firefox заполняет некоторые наши скрытые поля, которые должны быть пустыми

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

4b9b3361

Ответ 1

Если проблема заключается в том, что FF заполняет поля, когда пользователь обновляется, на самом деле это функция Firefox, которая пытается помочь пользователю в случае случайного обновления, чтобы они не теряли все, что они набрали. Я не думаю, что вы можете переопределить это с помощью HTML. Вы можете использовать JavaScript для очистки / reset всех соответствующих значений формы при загрузке страницы. Если form.reset() в форме не работает, вам придется перебирать элементы формы и очищать их следующим образом:

for (i = 0; i < frm_elements.length; i++)
{
    field_type = frm_elements[i].type.toLowerCase();
    switch (field_type)
    {
    case "text":
    case "password":
    case "textarea":
    case "hidden":
        frm_elements[i].value = "";
        break;
    case "radio":
    case "checkbox":
        if (frm_elements[i].checked)
        {
            frm_elements[i].checked = false;
        }
        break;
    case "select-one":
    case "select-multi":
        frm_elements[i].selectedIndex = -1;
        break;
    default:
        break;
    }
}

Ответ 2

У меня была аналогичная проблема для поля пароля в форме на странице.

Если есть тег ввода с типом = пароль в теге формы на странице, Firefox просто автоматически заполняет пароль:

<form>
    <input type='password' />
</form>

Вот код, который я использовал для исправления этой конкретной проблемы:

$('input[type=password]').val('')

Ответ 3

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

<Input name = "Username" type="text" autocomplete="off">
<Input name = "DummyUsername" type="text" style="display:none;">
<Input name = "DummyPassword" type="password" style="display:none;">
<Input name = "Password" type="password" autocomplete="new-password">

Это предотвратило автозаполнение имени пользователя, а также автозаполнение пароля.

autocomplete = "new-password", по-видимому, не полностью реализован, но может помочь с некоторыми браузерами. Я сомневаюсь, что это было полезно с FireFox, но оно есть для будущих версий, если эта функция будет более широко принята.

Ответ 4

Firefox только чтит autocomplete="off" в форме, а не отдельные элементы (в отличие от IE).

Другой вариант - изменить имена полей на такие странные вещи, как name="_u_sern_ame", чтобы запутать любые системы распознавания на местах, если вы хотите отключить автозаполнение некоторых деталей.

Ответ 5

У меня была эта проблема. На мой взгляд, ответ Майка близок, но не идеален: он опустошает элементы, даже если атрибут value может захотеть его установить.

В pageload я делаю следующее. Он использует только немного jQuery.

// Reset input elements to their HTML attributes (value, checked)
$("input").each(function(){
    // match checkbox and radiobox checked state with the attribute
    if((this.getAttribute('checked')==null) == this.checked)
        this.checked = !this.checked;
    // reset value for anything else
    else this.value = this.getAttribute('value')||'';
});

// Select the option that is set by the HTML attribute (selected)
$("select").each(function(){
    var opts = $("option",this), selected = 0;
    for(var i=0; i<opts.length; i++) 
        if(opts[i].getAttribute('selected')!==null) 
            selected = i;

    this.selectedIndex = selected||0;
}); 


Нет jQuery?

Используйте document.getElementsByTagName, чтобы выбрать input и select s, затем перейдите по ним и замените this на итерированный элемент.
Выберите параметры с помощью .getElementsByTagName('option').

Ответ 6

В этом сообщении предлагается использовать (другие) фиктивные поля, которые будут автозаполнены, вы можете скрыть их с помощью css. Но это, вероятно, будет лучше работать с полями пароля, чем другие.

Ответ 7

autocomplete='off' не будет препятствовать вводу или в форме положите

<input type='password' style='display: none;' />

перед входом в настоящий пароль.

Ответ 8

Это действительно работает с полем пароля в FireFox:

$(window).load(function(){
    $('#pass').val('');
});

Ответ 9

Если это действительно ошибка Firefox, вы можете использовать событие onSubmit, чтобы очистить скрытые поля. В виде кода:

<form onSubmit="clearFieldsIfPopulated(this)">
  <input type="hidden" name="field1"> <input type="submit">
</form>

Пример функции Javascript:

function clearFieldsIfPopulated(form) {
  if (form.field1.value != "") {
    form.field1.value == "";
  }
}

Ответ 10

что сработало для меня,

autocomplete="new-password"

Ответ 11

В некоторых случаях браузер будет продолжать предлагать значения автозаполнения, даже если атрибут автозаполнения отключен. Это неожиданное поведение может быть довольно загадочным для разработчиков. Трюк, который действительно заставляет no-autocompletion - назначить случайную строку атрибуту, например:

autocomplete="nope"

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

Пробовал в основных браузерах, и он работает!