2011-07-19 5 views
5

Tengo una página que contiene múltiples elementos de entrada de cuadros de verificación. Alternar estas altera la apariencia de la página de una manera que solo se puede hacer en Javascript.Control de la recuperación de formularios de Firefox

Mi problema surge cuando cierra y vuelve a abrir la página. Un breve (aparentemente inconsistente) momento después de que se carga la página, Firefox restaura el estado de las casillas de verificación sin aumentar sus eventos onchange.

¿Hay alguna forma de determinar cuándo Firefox recupera estos elementos o, como mínimo, hay alguna forma de desactivar esta funcionalidad sin que los usuarios tengan que cambiar la configuración de su navegador?

También estoy usando jQuery, en caso de que tenga algo que pueda ayudar.

El uso de autocomplete="off" en las entradas no tiene ningún efecto.

+0

Probablemente sea mejor reiniciar el formulario cuando se desencadena el evento de carga - 'document.forms [0] .reset()'. – RobG

Respuesta

4

Si solo necesita activar los controladores de cambios, para que coincida con el estado de la página según la última preferencia del usuario (lo cual parece una buena idea), entonces algo así debería ser el truco. :

$(window).load (function() { 
    $('input:checked').change(); 
}); 


See the demo at jsBin.

+1

Oh wow, noté que estaba sucediendo un tiempo después de document.ready, y nunca probé el evento de carga. ¡Gracias! – YotaXP

+0

De nada. ¡Encantado de ayudar! –

2

"Alternar éstos alterar la apariencia de la página"

No es su problema. La página debe depender del estado del conmutador, que no se cambiará cuando se alternen. Yo también he lidiado con el evento de "cambio" y el historial del navegador. En lugar de combatirlo, acéptelo como un almacenamiento gratuito de datos específicos del usuario. Dibuja la página según el estado de la entrada, incluso si crees saber lo que debe ser ser.

Si publica un código específico, podría sugerir modificaciones.

+0

Básicamente, lo que sucede cuando se activan estos cuadros es este ... un elemento se elimina permanentemente del DOM, otro elemento se oculta con una animación (o se muestra si todos los recuadros se borran) HTML se escribe en un par DIV para cargar Flash objetos, y varios DIV (dependiendo de las casillas marcadas) cambian de tamaño y se colocan de modo que todos puedan caber en la pantalla al mismo tiempo. Esta página está diseñada para nunca utilizar más o menos espacio del que proporciona la ventana. (Similar a Grooveshark de esa manera.) – YotaXP

+0

Solo digo que las dos funcionalidades deben estar separadas. Use un evento de "cambio", pero haga que llame a una función "stateOfToggle" que hace la manipulación real. Luego puede activar el mismo controlador en document.ready y volver a crear el efecto de las casillas de verificación del usuario. – Sinetheta

Cuestiones relacionadas