2009-11-25 20 views
19

Di solito, quando viene effettuato un aggiornamento su una pagina HTML, i valori dei campi di input vengono mantenuti (a meno che non si faccia Ctrl + F5).HTML - valore di input mantenuto dopo Refresh

C'è un'intestazione o un altro tipo di impostazione che può modificare questo comportamento, senza eseguire alcuna operazione sul modulo o sull'input stesso?

Ho un sito in cui il valore di input non viene mantenuto dopo un aggiornamento della pagina in produzione. Tuttavia non ho questo comportamento quando provo questo codice sul mio computer locale.

+0

Stai cercando di aggiungere questo comportamento a una delle tue pagine, o cercando di capire come il sito che ha citato lo fa in modo che è possibile disattivare il comportamento? –

+0

In effetti, sembra che la maggior parte delle persone che hanno risposto non l'abbiano capito. Sto cercando di capire come funziona il sito che sto controllando, per cambiare questo comportamento. Sto aggiornando la mia domanda per essere più chiara. –

+1

Questo è un problema solo per Firefox. Vedere la seguente "discussione" per una storia di 10 anni su questo elemento: https://bugzilla.mozilla.org/show_bug.cgi?id=46845 Trovo che il commento # 123 sia il più significativo – NotMe

risposta

1

Come impostare un valore predefinito su DOM pronto con javascript?

Qualcosa di simile

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

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

document.getElementById ('foo ') .value = 3 per coloro che non utilizzano jquery. –

+0

perché usi '3'? –

+0

È solo un esempio. Puoi usare tutto ciò che vuoi invece di '3'. – hex

6

È possibile aggiungere form.reset() al corpo onload:

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

Aggiornamento: mentre questo potrebbe essere una tecnica utile, ora ho scoperto che in realtà non risponde alla domanda del mittente.

53

Se si imposta l'attributo autocomplete=off, il contenuto non verrà mai memorizzato.

In alternativa, ci sono molti modi per farlo con javascript, a seconda esattamente di ciò che si vuole realizzare, sia che si tratti di cancellare l'intero modulo (utilizzare il metodo reset()), sia di reimpostare il singolo campo.

+1

Questo non è stato accettato perché la domanda non ha richiesto modifiche sugli input. Cosa non ha molto senso per me. @sonnb –

+0

Questa soluzione ha funzionato –

1

Per quanto ne so, non esiste un modo standard per implementarlo, quindi prima di poterlo disabilitare, per prima cosa è necessario determinare come lo sta facendo il sito. Ci sono molti modi in cui avrebbero potuto farlo, come puoi vedere dalla varietà di risposte diverse qui.

Un buon modo per capire cosa sta succedendo è di ridurre il codice all'esempio più semplice possibile che riproduce ancora il problema. Rimuovi tutti i grafici, testo non necessario, fogli di stile e altra formattazione, javascript irrilevante, tag HTML non pertinenti, ecc. Ma verifica sempre che sia ancora possibile riprodurre il problema. Alla fine ci sarà così poco codice che dovrebbe essere ovvio che cosa sta causando il reset dei campi. Dovrai fare tutto questo sulla macchina di produzione, dal momento che non puoi riprodurlo localmente. Per fare ciò, prendi una copia degli script e rinominali in index2.html, ecc. Assicurati di avere i backup del tuo sistema di produzione prima di fare ciò, nel caso qualcosa vada storto.

Se ancora non riesci a capire come risolvere il problema dopo averlo fatto, il codice dovrebbe essere sufficientemente piccolo da poter essere pubblicato qui e qualcun altro sarà in grado di risolverlo.

0

Io di solito uso questo:

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 '; 
}