2010-05-29 16 views
5

Quindi firefox ha un meccanismo ingegnoso che tenterà di completare automaticamente i valori nei campi quando una pagina viene ricaricata o viene utilizzato il pulsante indietro. Il che è grande e tutto tranne che quando si ha qualcosa come un menu a discesa che quando si imposta su un valore modifica la pagina usando ajax.Come disabilitare il completamento automatico del modulo di firefox senza modificare gli eventi?

Ciò che accade è che il browser ricarica la pagina, il menu a discesa è precompilato con il valore memorizzato e quindi nessun evento di modifica viene attivato quando il dom è pronto. E quindi i gestori di modifiche allegati non si attivano e quindi la pagina non viene aggiornata.

C'è un buon modo per "risolvere" questo comportamento in modo che funzioni per l'utente come previsto:

a) noi vogliamo il browser per il completamento automatico, perché questo è una buona esperienza utente.

b) Desidera comunque attivare l'evento onchange.

L'unica cosa che posso pensare di fare al momento è aggiungere un evento pronto al documento che ha javascript pre-compilato con i valori iniziali nel modulo, quando il documento carica il javascript controllerà il pre valori popolati e se non corrisponde a ciò che è nell'input attiverà i gestori del cambiamento.

Chiunque ha una soluzione migliore? C'è una lib che lo faccia già?

(Usando Rails 2.3.5 + jQuery)

risposta

1

Sfortunatamente non sembra esserci alcun modo per disattivare effettivamente firefox dai campi di riempimento automatico quando si ricarica una pagina o si utilizza il pulsante back-forward. Fortunatamente i valori sono già presenti durante l'evento $(document).ready(), quindi finché tutto in quegli input può avere il cambio .change anche inizialmente attivato su di essi, non importa da dove vengono i valori e funziona.

0

penso che è possibile aggiungere autocomplete="off" per evitare che il browser di precarica quei campi.

È inoltre possibile avere una funzione che esegue onload e in pratica controlla se il valore del campo corrisponde a quanto specificato nel parametro value="".

+0

Mi dispiace che copi solo ciò che ho scritto nella mia domanda. Per essere onesti, non voglio disabilitare la funzione di completamento automatico ... Penso che la soluzione che ho dato sia quella che uso. –

Problemi correlati