2012-03-20 6 views
14

Ho un campo di input nascosto nel mio modulo. Ho notato che se il valore di quel campo è cambiato da javascript, e poi l'utente aggiorna la pagina, lo stesso valore verrà impostato quando la pagina viene ricaricata. Da quello che ho visto, questo accade solo in Firefox.Firefox nasconde gli input nascosti

Ho risolto questo comportamento indesiderato con l'aggiunta di autocomplete="off" a quell'ingresso nascosto, ma W3C non piace questa soluzione, e se convalidare la pagina ottengo l'errore:

Attribute autocomplete not allowed on element input at this point. 

A quanto pare, l'attributo autocomplete funziona solo su input specifici - see here.

Quindi c'è qualche soluzione che soddisfi entrambi W3C e Firefox?

+0

Il tag 'autocomplete' è valido solo in html5, quindi aggiungo il tag html5 alla domanda. – jmlnik

+0

vedere anche http://stackoverflow.com/questions/2486474/preventing-firefox-from-rebering-the-input-value-on-refresh-with-meta-tag – user123444555621

+0

@ Pumbaa80, tamir già provato con 'autocomplete =" off "", ma ciò non vale per '' in base alle specifiche. Stai suggerendo che i tag/header della cache impedirebbero a Firefox di completare automaticamente il modulo? – jmlnik

risposta

11

Per convalidare (che non avrei messo tanto sforzo nel come sei) Penso che si potrebbe utilizzare autocomplete="off" su tutto il modulo, quindi riaccenderlo in modo selettivo, in questo modo:

<!DOCTYPE html> 
<html> 
<head> 
    <title>TEST</title> 
</head> 
<body> 
    <form autocomplete="off"> 
     <input type="hidden" name="test"> 
     <input type="text" name="otherfield" autocomplete="on"> 
    </form> 
</body> 
</html> 

I inizialmente pensavo che questo fosse un bug di Firefox ma dopo aver discusso con robertc nei commenti, penso che il comportamento atteso dipenda da casi d'uso specifici. Le specifiche non consentono il completamento automatico su campi nascosti, quindi la mia prima reazione sembra ancora giusta, ma l'implementazione di Firefox potrebbe avere alcuni validi argomenti per supportarla. Per favore, commenta.

+0

Firefox memorizza nella cache lo stato di tutti i campi modulo quando si ricarica (e si va avanti e indietro), non è male, è una funzionalità. – robertc

+0

funziona :) grazie. – tamir

+1

@robertc, i campi di memorizzazione nella cache che possono essere modificati dall'utente è buono, sì, ma memorizzando nella cache i campi nascosti?!?! Com'è utile o una caratteristica? Credo che il team FF semplicemente non abbia pensato a questo caso d'uso e non abbia implementato correttamente le specifiche. – jmlnik

3

In alternativa, è possibile utilizzare <input type="text" style="display: none;" autocomplete="off" />. È un po 'un trucco, ma dovrebbe funzionare!

La memorizzazione nella cache di Firefox è in realtà una buona funzionalità per un sacco di tempo, ma causa alcuni problemi quando si creano moduli più dinamici.