it-swarm-pt.tech

O Firefox mantém dados de formulário ao recarregar

Eu tenho um grande problema com a funcionalidade do Firefox que mantém os dados que o usuário preencheu na recarga F5. Se eu uso Ctrl+F5 os formulários são apagados e isso é ótimo. Meu problema é que nem todos os meus usuários sabem que isso é o que eles precisam fazer para forçar a limpeza da entrada. Existe uma maneira nos cabeçalhos de resposta ou html para dizer ao Firefox para não manter os dados nos formulários?

55
Andreas

Basta adicionar autocomplete="off" às suas entradas e você resolverá o problema.

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

jQuery para resolver isso em todas as entradas e textareas

$('input,textarea').attr('autocomplete', 'off');
73
Andreas

Em vez de passar por todas as entradas, você também pode simplesmente adicionar o atributo ao seu elemento de formulário da seguinte forma:

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

No entanto, os métodos acima mencionados em domReady não funcionaram para mim ...

13
Daniel G.

Eu acho que maneira mais fácil e rápida de fazer isso é

$('input,textarea').attr('autocomplete', 'off');
6
Konrad K.

Eu tentei a solução encurtada acima, mas não limpei o valor das caixas de seleção na minha página. 

Acabei modificando um pouco e agora todos os tipos de entrada na página são apagados, independentemente do tipo: 

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

Então, para fazer isso, basta colocar no método ready ():

$(document).ready(function () {
    var allInputs = $(":input");
    $(allInputs).attr('autocomplete', 'off');
});
5
Todd Darnell
/*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 = "";
     }
}

Chame essa função de onload.

5
www139

Caso deseje manter o recurso de preenchimento automático do navegador (consulte outras respostas válidas), tente adicionar o atributo name ao formulário e atribua a ele um valor aleatório. Ele tem trabalhado para mim:

<form id="my-form" name="<random-hash>">
...
</form>
2
Felix

Eu encontrei a única solução para mim era fazer

document.forms[0].reset();

antes de doc pronto no início da página, como sugerido no comentário de @Marek acima - não ótimo, mas funcionou para mim (o método de atributo de autocomplete via jQuery, JS ou HTML não o consertou no final)

0
jonnybradley