web-dev-qa-db-fra.com

Faire une page pour dire au navigateur de ne pas mettre en cache / préserver les valeurs d'entrée

La plupart des valeurs d'entrée du formulaire de cache du navigateur. Ainsi, lorsque l'utilisateur actualise la page, les entrées ont les mêmes valeurs.

Voici mon problème. Lorsque l'utilisateur clique sur Enregistrer, le serveur valide les données POST (produits vérifiés, par exemple) 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 de certaines valeurs, elles peuvent toujours l'être à cause du cache du navigateur! Mes données ont des cases invisibles (jusqu'à ce que l'élément parent soit sélectionné), de sorte que l'utilisateur peut même ne pas être conscient du fait qu'une valeur précédente est toujours sélectionnée, jusqu'à ce que vous cliquiez à nouveau sur Enregistrer et que le message d'erreur apparaisse - même si l'utilisateur pense que ce n'est pas le cas. Ce qui est irritant.

Cela peut être résolu en utilisant Ctrl-F5, mais ce n'est même pas une solution. Existe-t-il un moyen automatique/programmé de dire au navigateur de ne pas mettre en cache les données d’entrée de formulaire sur un formulaire/une page?

107
queen3

Définissez-vous explicitement les valeurs comme vides? Par exemple:

<input type="text" name="textfield" value="">

Cela devrait empêcher les navigateurs de placer des données là où elles ne devraient pas. Vous pouvez également ajouter l'attribut autocomplete à la balise de formulaire:

<form autocomplete="off" ...></form>
181
DisgruntledGoat

de référence de stackoverflow

cela ne fonctionnait pas avec value = "" si le navigateur enregistrait déjà la valeur, vous devriez donc ajouter

Pour une balise d'entrée, il existe l'attribut autocomplete que vous pouvez définir:

<input type="text" autocomplete="off" />

Vous pouvez également utiliser la saisie semi-automatique pour un formulaire.

40
shareef

une autre approche consisterait à réinitialiser le formulaire en utilisant JavaScript juste après le formulaire dans le code HTML.

<form id="myForm">
  <input type="text" value="" name="myTextInput" />
</form>
<script type="text/javascript">
  document.getElementById("myForm").reset();
</script>
10
pmko

ajout tardif, mais cela a fonctionné pour moi dans les nouveaux navigateurs:

autocomplete = "nouveau-mot de passe"

6
erikrunia

Il existe essentiellement deux méthodes pour effacer le cache:

<form autocomplete="off"></form> 

ou

$('#Textfiledid').attr('autocomplete','off');

`

5
Anand Dwivedi