Firefox keeps form data on reload

后端 未结 8 2077
忘掉有多难
忘掉有多难 2020-12-02 14:59

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

相关标签:
8条回答
  • 2020-12-02 15:38

    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');
    
    0 讨论(0)
  • 2020-12-02 15:39
    /*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.

    0 讨论(0)
  • 2020-12-02 15:42

    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...

    0 讨论(0)
  • 2020-12-02 15:48

    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));
        ..
    }
    
    0 讨论(0)
  • 2020-12-02 15:57

    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)

    0 讨论(0)
  • 2020-12-02 15:58

    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');
    });
    
    0 讨论(0)
提交回复
热议问题