La mayoría de los navegadores almacenan en caché los valores de entrada del formulario. Entonces, cuando el usuario actualiza una página, las entradas tienen los mismos valores.
Este es mi problema. Cuando un usuario hace clic en Guardar , el servidor valida los datos publicados (por ejemplo, productos comprobados) y, si no son válidos, los devuelve al navegador. Sin embargo, como se indicó anteriormente, incluso si el servidor borra la selección de algunos valores, ¡aún pueden seleccionarse debido a la caché del navegador!
Mis datos tienen casillas de verificación invisibles (hasta que se seleccione el elemento principal), por lo que es posible que el usuario ni siquiera sepa que algún valor anterior todavía está seleccionado, hasta que haga clic en Guardar nuevamente y obtenga un mensaje de error, aunque el usuario piense que no lo está. Lo que es irritante.
Esto se puede resolver haciendo Ctrl+ F5, pero ni siquiera es una solución. ¿Existe una forma automática / programática de decirle al navegador que no almacene en caché los datos de entrada del formulario en algún formulario / página?
fuente
<form autocomplete="off"...
una opción para ti? ¿Este problema ocurre en todos los navegadores o solo en uno en particular?<select>
listas desplegables ? Tengo una lista y he definido unaselected
opción, pero al actualizar la página se conservan las opciones seleccionadas anteriormente.Respuestas:
¿Está estableciendo explícitamente los valores en blanco? Por ejemplo:
Eso debería evitar que los navegadores coloquen datos donde no deberían. Alternativamente, puede agregar el
autocomplete
atributo a la etiqueta del formulario:fuente
checked="false"
, es posible que funcione en algunos navegadores. Otra alternativa es usar Javascript / jQuery para desmarcar explícitamente todas las casillas de verificación al cargar la página.De una referencia de Stack Overflow
No funcionó con value = "" si el navegador ya guarda el valor, por lo que debe agregar.
Para una etiqueta de entrada, existe el atributo autocompletar que puede establecer:
También puede utilizar la función de autocompletar para un formulario.
fuente
autocomplete="off"
no tiene ningún efecto cuando se usa en elementos de formulario individuales, incluso con elvalue
atributo establecido explícitamente en blanco, y al enviar unCache-Control: Must-Revalidate
encabezado, esto no tuvo ningún efecto. Tuve que aplicar elautocomplete="off"
atributo al<form>
elemento en sí para suprimir este comportamiento en Chrome.Otro enfoque sería restablecer el formulario usando JavaScript justo después del formulario en el HTML:
fuente
Básicamente, hay dos formas de borrar la caché:
o
fuente
Esto funcionó para mí en los navegadores más nuevos:
fuente