2010-08-07 23 views
5

Tengo un formulario donde se supone que todo está deshabilitado en la carga, excepto en el primer campo.
El primer campo es una entrada de autocompletar. Cuando seleccionan algo de él, se deshabilita y luego configura el segundo campo para habilitarlo. El segundo campo es un menú desplegable.Cómo prevenir el restablecimiento del formulario HTML

El problema es que, después de que un usuario utiliza el formulario y hace clic en el botón Atrás, pasa a un estado similar al que tenía antes de hacer clic en enviar-- 1- autocompletar está deshabilitado (pero no tiene ningún valor para alguna razón) 2- desplegable está habilitado, y establecido en el valor que enviaron con

He intentado forzar la restauración del formulario con javascript (usando jquery's .ready()), pero el .ready() no se ejecuta después de que regresen con el botón Atrás.

Actualizar la página después de volver la restaura. ¿Alguna idea de cómo puedo solucionar esto?

+1

Me he topado con este problema yo mismo, y siempre he encontrado un mejor diseño de todos modos. ¿Has considerado un rediseño? – strager

Respuesta

1

El problema es que los navegadores son inconsistentes en la forma en que manejan el botón Atrás. Firefox, por ejemplo, almacena en caché el estado del HTML (procesamiento posterior a Javascript) y vuelve a ese estado después de presionar el botón Atrás, pero otros no.

Lo mejor que puede hacer es enviar el URL a una URL que contenga HTML que represente los datos enviados con la capacidad de editar los datos enviados. Esto le dará a sus usuarios menos deseos de querer presionar el botón Atrás.

Editar:

También debe agregar esto a su página:

<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> 

que se supone que evitar que los navegadores almacenamiento en caché de los cambios de estado de la página. Supongo que lo preferiría para que cuando el usuario presione el botón Atrás comiencen desde el principio de la página.

+0

esa es una buena idea. Voy a tomar esto como una respuesta, pero por curiosidad, ¿hay alguna solución a este problema? Estoy pensando que podría ser posible con algunos trucos del lado del servidor (por ejemplo, actualizar la página de php cuando regresen) – babonk

+0

"pero otros no". - Sugiero que cambies esto a "pero otros no". Opera hace algo similar a lo que hace Firefox (aunque me gusta cómo Opera lo hace mejor), y puede haber otros navegadores que también mantienen el estado (me vienen a la cabeza los elinks). – strager

+0

Buena aclaración, extraño. – Jacob

Cuestiones relacionadas