it-swarm.it

Firefox controlla i dati del modulo sulla ricarica

Ho un grosso problema con la funzionalità di Firefox che mantiene i dati che l'utente ha compilato per ricaricare F5. Se io uso Ctrl+F5 le forme vengono cancellate e questo è fantastico. Il mio problema è che non tutti i miei utenti sanno che questo è quello che devono fare per forzare la pulizia dell'input. C'è un modo nelle intestazioni html o di risposta per dire a Firefox di non conservare i dati nei moduli?

55
Andreas

Basta aggiungere autocomplete="off" ai tuoi input e risolverà il problema.

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

jQuery per risolvere questo problema su tutti gli input e i textareas

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

Invece di esaminare tutti gli input, puoi anche aggiungere l'attributo al tuo elemento di forma in questo modo:

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

Tuttavia i metodi sopra citati su domReady non hanno funzionato per me ...

13
Daniel G.

Penso che il modo più facile e più veloce per farlo sia

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

Ho provato la soluzione abbreviata sopra, ma non ha cancellato il valore delle caselle di selezione sulla mia pagina. 

Ho finito per modificarlo leggermente e ora tutti i tipi di input sulla pagina sono cancellati indipendentemente dal tipo: 

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

Quindi, per eseguire questo runload, lo metto nel metodo 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 = "";
     }
}

Chiama questa funzione suload.

5
www139

Se si desidera mantenere la funzione di completamento automatico del browser (vedere altre risposte valide), provare ad aggiungere l'attributo nome al modulo e assegnargli un valore casuale. Ha funzionato per me:

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

Ho trovato che l'unica soluzione per me era fare

document.forms[0].reset();

prima che doc fosse presto nella pagina, come suggerito nel commento di @Marek sopra - non eccezionale ma ha funzionato per me (il metodo di attributo autocomplete tramite jQuery, JS o HTML non ha risolto il problema per me)

0
jonnybradley