Firefox keeps form data on reload

FormsFirefoxCaching

Forms Problem Overview


I have a big problem with the functionality in Firefox that keeps data that the user have filled in on reload F5. If i use Ctrl+F5 the forms are cleared and this is great. My problem is that not all my users know that this is what they have to do to force the input cleanup. Is there a way in the html or response headers to tell Firefox to not keep the data in the forms?

Forms Solutions


Solution 1 - Forms

Just add autocomplete="off" to your inputs and you will solve the problem.

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

jQuery to solve this on all inputs and textareas

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

Solution 2 - Forms

Instead of going through all inputs you may also just add the attribute to your form-element like so:

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

However the above mentioned methods on domReady did not work for me...

Solution 3 - Forms

In case you want to keep the autocomplete feature of the browser (see other valid answers), try adding the name attribute to the form and give it a random value. It has worked for me:

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

Solution 4 - Forms

I think easier and quicker way to do that is

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

Solution 5 - Forms

/*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 = "";
     }
}

Call this function onload.

Solution 6 - Forms

I tried the shortened solution above, but it didn't clear the value of the select boxes on my page.

I ended up modifying it slightly and now all input types on the page are cleared regardless of type:

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

So to make this run onload I just put it in the ready() method:

$(document).ready(function () {
    var allInputs = $(":input");
    $(allInputs).attr('autocomplete', 'off');
});

Solution 7 - Forms

I found the only fix for me was to do

document.forms[0].reset();

before doc ready early in the page, as suggested in the comment by @Marek above - not great but worked for me (the autocomplete attribute method via either jQuery, JS or HTML didn't in the end fix it for me)

Solution 8 - Forms

just to piggyback on @jonnybradley's solution (couldn't comment on his answer because I don't have enough rep yet):

This also worked perfectly form me:

document.getElementById('theFormId').reset();

called after the HTML code.

Solution 9 - Forms

one of my colleagues recommended that we should use a random string as the name of the form. It works very well if you don't use the name attribute of the form.

it is an example from the sf1 form builder:

public function renderFormTag($url, array $attributes = [])
{
	..
	$attributes['name'] = isset($attributes['name']) ? $attributes['name'] : bin2hex(random_bytes(16));
	..
}

Solution 10 - Forms

autocomplete="off" is also needed for hidden input fields in order to have them refreshed on simple page reload (F5)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndreasView Question on Stackoverflow
Solution 1 - FormsAndreasView Answer on Stackoverflow
Solution 2 - FormsDaniel G.View Answer on Stackoverflow
Solution 3 - FormsFelixView Answer on Stackoverflow
Solution 4 - FormsKonrad K.View Answer on Stackoverflow
Solution 5 - Formswww139View Answer on Stackoverflow
Solution 6 - FormsTodd DarnellView Answer on Stackoverflow
Solution 7 - FormsjonnybradleyView Answer on Stackoverflow
Solution 8 - FormsGutimanView Answer on Stackoverflow
Solution 9 - FormsZoltán SüleView Answer on Stackoverflow
Solution 10 - FormsErik KrauseView Answer on Stackoverflow