Make page to tell browser not to cache/preserve input values

194,555

Solution 1

Are you explicitly setting the values as blank? For example:

<input type="text" name="textfield" value="">

That should stop browsers putting data in where it shouldn't. Alternatively, you can add the autocomplete attribute to the form tag:

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

Solution 2

From a Stack Overflow reference

It did not work with value="" if the browser already saves the value so you should add.

For an input tag there's the attribute autocomplete you can set:

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

You can use autocomplete for a form too.

Solution 3

Basically, there are two ways to clear the cache:

<form autocomplete="off"></form>

or

$('#Textfiledid').attr('autocomplete', 'off');

Solution 4

Another approach would be to reset the form using JavaScript right after the form in the HTML:

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>

<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>

Solution 5

This worked for me in newer browsers:

autocomplete="new-password"
Share:
194,555
queen3
Author by

queen3

Bla-bla-bla.

Updated on June 03, 2020

Comments

  • queen3
    queen3 almost 4 years

    Most browsers cache form input values. So when the user refreshes a page, the inputs have the same values.

    Here's my problem. When a user clicks Save, the server validates POSTed data (e.g. checked products), and if not valid, sends it back to the browser. However, as stated above, even if the server clears selection for some values, they may still be selected because of the browser cache!

    My data has invisible (until parent item selected) checkboxes, so the user may be even not aware that some previous value is still selected, until clicking Save again and gets an error message - even though the user thinks it's not. Which is irritating.

    This can be resolved by doing Ctrl + F5, but it's not even a solution. Is there an automatic/programmatic way to tell browser not to cache form input data on some form/page?

  • queen3
    queen3 about 14 years
    I talk about checkboxes so I can't set value to "". And, does autocomplete off means not to store form input values "when user presses F5", not only "for dropdown autocompletion list"?
  • queen3
    queen3 about 14 years
    According to developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion‌​, autcompletion=off affects "Session history caching", at least in Gecko. I will test if it works for what I need.
  • DisgruntledGoat
    DisgruntledGoat about 14 years
    @queen3: Yes, checkboxes are a problem since there is no way to explicitly say "not checked". If you're still having problems, you could try checked="false", it may work in some browsers. Another alternative is to use Javascript/jQuery to explicitly untick all checkboxes on page load.
  • sejnovic
    sejnovic almost 12 years
    @queen3, you mean "autocomplete=off" not "autocompletion=off"
  • mindplay.dk
    mindplay.dk almost 11 years
    In Chrome, it appears autocomplete="off" has no effect when used on individual form-elements - even with value attribute explicitly set blank, and while sending a Cache-Control: Must-Revalidate header, this had no effect. I had to apply the autocomplete="off" attribute to the <form> element itself to suppress this behavior in Chrome.
  • hakan
    hakan almost 10 years
    All of the answers and suggestions didnt work for me. Using chrome and develeoping .net
  • Kingsley Simon
    Kingsley Simon almost 8 years
    i did autocomplete="off" on form but it didnt work for me
  • shareef
    shareef almost 8 years
    i need more info @KingsleySimon like browser , and you may have some settings on your browser that prevent the correct behavior
  • david
    david over 7 years
    it seems that browser's behavior has changed: developer.mozilla.org/en-US/docs/Web/Security/…
  • shareef
    shareef over 7 years
    and be noted the html valid form . and for example its not aform inside another etc
  • thenninger
    thenninger about 7 years
    @piedpiper Try ModelState.Clear() in your controller action. If you are using return View(...or return PartialView(... then it will return the old values. This is by design for MVC.
  • 6opko
    6opko about 3 years
    ...adding autocomplete="off" as an input field argument did the trick for me