web-dev-qa-db-fra.com

Firefox conserve les données de formulaire lors du rechargement

J'ai un gros problème avec la fonctionnalité de Firefox qui garde les données que l'utilisateur a renseignées lors du rechargement F5. Si j'utilise Ctrl+F5 les formes sont effacées et c'est génial. Mon problème est que tous mes utilisateurs ne savent pas que c'est ce qu'ils doivent faire pour forcer le nettoyage de l'entrée. Existe-t-il un moyen dans les en-têtes HTML ou de réponse de dire à Firefox de ne pas conserver les données dans les formulaires?

55
Andreas

Ajoutez simplement autocomplete="off" à vos entrées et vous résoudrez le problème.

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

jQuery pour résoudre cela sur toutes les entrées et textareas

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

Au lieu de passer par toutes les entrées, vous pouvez aussi simplement ajouter l'attribut à votre élément de formulaire, comme ceci:

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

Cependant, les méthodes mentionnées ci-dessus sur domReady ne fonctionnaient pas pour moi ...

13
Daniel G.

Je pense que le moyen le plus simple et le plus rapide de le faire est

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

J'ai essayé la solution abrégée ci-dessus, mais elle n'a pas effacé la valeur des cases de sélection de ma page. 

J'ai fini par le modifier légèrement et maintenant tous les types d'entrée de la page sont effacés quel que soit le type: 

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

Donc, pour que cette exécution se produise, je viens de la mettre dans la méthode 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 = "";
     }
}

Appelez cette fonction onload.

5
www139

Si vous souhaitez conserver la fonctionnalité de saisie semi-automatique du navigateur (voir autres réponses valides), essayez d’ajouter l’attribut name au formulaire et attribuez-lui une valeur aléatoire. Ça a marché pour moi:

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

J'ai trouvé la seule solution pour moi était de faire

document.forms[0].reset();

avant que la documentation soit prête au début de la page, comme suggéré dans le commentaire de @Marek ci-dessus - pas génial, mais a fonctionné pour moi (la méthode d'attribut autocomplete via jQuery, JS ou HTML n'a finalement pas résolu le problème pour moi)

0
jonnybradley