La plupart des navigateurs mettent en cache les valeurs d'entrée des formulaires. Ainsi, lorsque l'utilisateur actualise une page, les entrées ont les mêmes valeurs.
Voici mon problème. Lorsqu'un utilisateur clique sur Enregistrer , le serveur valide les données POSTÉES (par exemple les produits vérifiés) et, si elles ne sont pas valides, les renvoie au navigateur. Cependant, comme indiqué ci-dessus, même si le serveur efface la sélection pour certaines valeurs, elles peuvent toujours être sélectionnées à cause du cache du navigateur!
Mes données ont des cases à cocher invisibles (jusqu'à ce que l'élément parent soit sélectionné), de sorte que l'utilisateur peut même ne pas savoir qu'une valeur précédente est toujours sélectionnée, jusqu'à ce qu'il clique à nouveau sur Enregistrer et reçoive un message d'erreur - même si l'utilisateur pense que ce n'est pas le cas. Ce qui est irritant.
Cela peut être résolu en faisant Ctrl+ F5, mais ce n'est même pas une solution. Existe-t-il un moyen automatique / programmatique de dire au navigateur de ne pas mettre en cache les données d'entrée de formulaire sur un formulaire / une page?
la source
<form autocomplete="off"...
option pour vous? Ce problème se produit-il dans tous les navigateurs, ou juste un en particulier?<select>
listes déroulantes . J'ai une liste et j'ai défini unselected
choix, mais l'actualisation de la page conserve les options sélectionnées précédemment.Réponses:
Définissez-vous explicitement les valeurs comme vides? Par exemple:
Cela devrait empêcher les navigateurs de mettre des données là où elles ne le devraient pas. Vous pouvez également ajouter l'
autocomplete
attribut à la balise form:la source
checked="false"
, cela peut fonctionner dans certains navigateurs. Une autre alternative consiste à utiliser Javascript / jQuery pour décocher explicitement toutes les cases au chargement de la page.À partir d' une référence de débordement de pile
Cela ne fonctionnait pas avec value = "" si le navigateur enregistre déjà la valeur, vous devez donc l'ajouter.
Pour une balise d'entrée, vous pouvez définir l'attribut autocomplete:
Vous pouvez également utiliser la saisie semi-automatique pour un formulaire.
la source
autocomplete="off"
n'avoir aucun effet lorsqu'il est utilisé sur des éléments de formulaire individuels - même avec unvalue
attribut explicitement défini en blanc, et lors de l'envoi d'un en-Cache-Control: Must-Revalidate
tête, cela n'a eu aucun effet. J'ai dû appliquer l'autocomplete="off"
attribut à l'<form>
élément lui-même pour supprimer ce comportement dans Chrome.Une autre approche consisterait à réinitialiser le formulaire en utilisant JavaScript juste après le formulaire dans le HTML:
la source
Fondamentalement, il existe deux façons de vider le cache:
ou
la source
Cela a fonctionné pour moi dans les nouveaux navigateurs:
la source