HTML - input value kept after Refresh

2019-02-04 05:56发布

问题:

Usually, when a refresh is made on an HTML page, the values for input fields are kept (unless you do Ctrl+F5).

Is there a header or other type of setting than can change this behavior, without chaging anything on the form or input itself?

I have a site where the input value is not kept after a page refresh in Production. However I do not have this behavior when I test this code on my local machine.

回答1:

If you set the attribute autocomplete=off, the content will never be stored.

Alternatively, there's a plethora of ways to accomplish this with javascript, depending on exactly what you want to accomplish, whether it be clearing the whole form (use the reset() method), or resetting the single field.



回答2:

You can add form.reset() to the body onload:

<html>
    <body onload="form1.reset();">
        <form id="form1">
            <textarea id="text"></textarea>
        </form>
    </body>
</html>

Update: while this might be a useful technique, I have now found out that it doesn't actually answer the submitter's question.



回答3:

How about setting a default value on DOM ready with javascript?

Something like

<input name="foo" id="foo" type="text">

$('#foo').val('3')


回答4:

As far as I know, there is no standard way to implement it, so before you can disable it, you first you need to determine how the site is doing it. There are many ways they could have done it, as you can see from the variety of different answers here.

A good way of understanding what is going on is to reduce the code to the simplest possible example that still reproduces the issue. Remove all graphics, unneeded text, style sheets and other formatting, irrelevant javascript, irrelevant HTML tags, etc. but always checking that you can still reproduce the issue. Eventually there will be so little code left that it should be obvious what it is that is causing the fields to be reset. You will have to do all this on the production machine, since you cannot reproduce it locally. To do this, take a copy of the scripts and rename them to index2.html, etc. Make sure you have backups of your production system before doing this, in case something goes wrong.

If you still can't understand how to fix the issue after doing this, the code should be sufficiently small that it can be posted here and someone else will be able to work it out.



回答5:

I normally use this:

var reset_input_values = document.querySelectorAll('input');
for (var i = 0; i < reset_input_values.length; i++) {
  reset_input_values[i].value = 'value you want ';
}