2010-05-29 14 views
5

Firefox tiene un ingenioso mecanismo que intentará autocompletar los valores en los campos cuando se recarga una página o se utiliza el botón Atrás. Lo cual es genial y todo excepto cuando tienes algo así como un menú desplegable que cuando se establece en un valor modifica la página usando ajax.Cómo deshabilitar la finalización automática del formulario de Firefox sin cambiar los eventos?

Lo que serpentea pasando es que el navegador vuelve a cargar la página, el menú desplegable se rellena previamente con el valor acordado, y luego ningún caso el cambio se dispara cuando el DOM está listo. Y, por lo tanto, los controladores de cambio adjuntos no se activan y, por lo tanto, la página no se actualiza.

¿Hay una buena manera de "arreglar" este comportamiento para que funciona para el usuario como se esperaba:

a) Queremos el navegador para auto-completar, ya que es una buena experiencia de usuario.

b) Todavía quiero esa activación de evento onchange.

Lo único que se me ocurre hacer en este momento es agregar un evento listo para usar al documento que tiene javascript rellenado previamente con valores iniciales en el formulario, cuando el documento carga el javascript comprobará el pre-evento los valores poblados y si no coinciden con lo que está en la entrada activará los manejadores de cambios.

¿Alguien tiene una mejor solución? ¿Hay una lib que hace esto ya?

(El uso de rieles 2.3.5 + jQuery)

Respuesta

1

Desafortunadamente, parece que no hay forma de deshabilitar realmente a firefox de los campos de autocompletar al volver a cargar una página o al usar el botón Atrás. Afortunadamente, los valores ya están allí durante el evento $(document).ready(), por lo que siempre que todo en esas entradas pueda tener el .change disparado inicialmente sobre ellos, no importa de dónde vienen los valores y simplemente funciona.

0

Creo que se puede añadir autocomplete="off" a impedir que el navegador llenado previo esos campos.

También puede tener una función que ejecuta onload y básicamente comprueba si el valor del campo coincide con el especificado en el parámetro value="".

+0

Lo siento, es solo copiar lo que escribí en mi pregunta. Para ser sincero, no quiero deshabilitar la función de autocompletar ... Creo que la solución que di debe ser la que uso. –

Cuestiones relacionadas