Firefox сохраняет данные формы при перезагрузке - PullRequest
55 голосов
/ 11 сентября 2011

У меня большая проблема с функциональностью в Firefox, которая хранит данные, которые пользователь заполнил при перезагрузке F5 .Если я использую Ctrl + F5 , формы очищаются, и это здорово.Моя проблема в том, что не все мои пользователи знают, что это то, что они должны сделать, чтобы принудительно очистить ввод.Есть ли способ в заголовках html или ответа указать Firefox не хранить данные в формах?

Ответы [ 7 ]

78 голосов
/ 11 сентября 2011

Просто добавьте autocomplete="off" к вашим входам, и вы решите проблему.

<input type="text" autocomplete="off">

jQuery, чтобы решить эту проблему для всех входов и текстовых полей

$('input,textarea').attr('autocomplete', 'off');
14 голосов
/ 30 января 2014

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

<form method="post" autocomplete="off">...</form>

Однако вышеупомянутые методы на domReady у меня не сработали ...

6 голосов
/ 14 мая 2012

Я думаю, что проще и быстрее сделать это

$('input,textarea').attr('autocomplete', 'off');
5 голосов
/ 18 марта 2015
/*reset form elements (firefox saves it)*/

function resetElements()
{
     var inputs = document.querySelectorAll('input[type=text]');
     //you get the idea.....you can retrieve all inputs by tag name input
     for(var i = 0; i < inputs.length; i++) {
         document.getElementsByTagName('input')[i].value = "";
     }
     var textareas = document.getElementsByTagName('textarea');
     for(var i = 0; i < textareas.length; i++) {
         document.getElementsByTagName('textarea')[i].value = "";
     }
}

Вызовите эту функцию при загрузке.

5 голосов
/ 30 ноября 2012

Я пробовал сокращенное решение выше, но оно не очистило значение полей выбора на моей странице.

Я немного изменил его, и теперь все типы ввода на странице очищаются независимо от типа:

var allInputs = $(":input");
$(allInputs).attr('autocomplete', 'off');

Итак, чтобы сделать этот запуск загруженным, я просто поместил его в метод ready ():

$(document).ready(function () {
    var allInputs = $(":input");
    $(allInputs).attr('autocomplete', 'off');
});
2 голосов
/ 12 июня 2017

Если вы хотите сохранить функцию автозаполнения браузера (см. Другие действительные ответы), попробуйте добавить в форму атрибут name и присвоить ему случайное значение. У меня это сработало:

<form id="my-form" name="<random-hash>">
...
</form>
0 голосов
/ 03 января 2019

Я обнаружил, что единственное исправление для меня было сделать

document.forms[0].reset();

до того, как документ будет готов в начале страницы, как это было предложено в комментарии @Marek выше - не очень хорошо, но у меня получилось (атрибут autocompleteметод через jQuery, JS или HTML, в конце концов, не помог мне)

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