2008-09-09 7 views
14

Lorsqu'un utilisateur clique sur Actualiser dans son navigateur, il recharge la page mais conserve le contenu des champs de formulaire. Bien que je puisse voir cela comme étant un défaut utile, il peut être ennuyeux sur certaines pages dynamiques, conduisant à une expérience utilisateur brisée.Comportement d'actualisation du navigateur

Existe-t-il un moyen, dans les en-têtes HTTP ou équivalents, de modifier ce comportement?

+0

Avant de faire cela, car prudent dans votre hypothèse que tout le monde va vouloir que vous effaciez des formes, parce que personnellement, j'aime que les données de formulaire est disponible pendant back/forward. Les navigateurs ont mis longtemps à le faire et je détesterais que ça disparaisse! –

+0

Ne vous inquiétez pas, je ne suis pas en train de désactiver cela pour tous les formulaires, seulement les quelques cas où l'hypothèse n'a pas de sens. –

Répondre

30
<input autocomplete="off"> 
+1

cela fonctionne-t-il pour les boutons radio? –

+1

cela fonctionne pour les boutons radio – James

+0

c'est de travail seulement pour HTML5 – assaqqaf

0

Je me demande, si vous définissez la page ne doit pas être mis en cache via les balises meta, est-ce que résoudre le problème? http://lists.evolt.org/archive/Week-of-Mon-20030106/131984.html Si c'est le cas, il aura l'avantage de travailler sur le navigateur avec Javascript désactivé.

+0

En fait, j'ai besoin de Javascript pour toutes sortes d'autres parties de la page. –

6

Cela devrait faire l'affaire:

<body onload="document.FormName.reset();"> 

Remplacer FormName avec le nom de votre formulaire, puis tous les champs seront remis à zéro lorsque l'utilisateur clique rafraîchir dans son navigateur.

Ou si vous ne souhaitez que réinitialiser certains champs, ajoutez au bas de votre page:

<script type="text/javascript"> 
    document.getElementById('field1').value =''; 
    document.getElementById('field2').value =''; 
    document.getElementById('field3').value =''; 
</script> 

qui réinitialisera les champs chaque fois qu'un utilisateur entre dans la page, y compris rafraîchit

0

Le les données sur les formulaires ne font pas partie de la spécification w3c. C'est une fonction de navigateur pour vous faciliter la vie. Donc, si vous ne voulez pas conserver les données après les rechargements, vous pouvez définir toutes les valeurs du formulaire sur null après l'avoir chargé, comme l'a dit Espo. Même si la page n'est pas mise en cache, elle affichera les données sur le formulaire, car les données ne font pas partie du code html de la page. Vous pouvez essayer cela aussi (ne sais pas si cela va fonctionner):

<input type="text" name="foo" value=""> 
3

Ajoutez l'attribut autocomplete réglé sur « off » aux entrées que vous ne voulez pas être rafraîchi. Par exemple:

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

voir the W3C reference

bien que non mentionné dans la référence, il travaille également avec des cases à cocher, au moins sur firefox.

Questions connexes