2010-08-07 6 views
5

J'ai un formulaire où tout est supposé être désactivé en charge sauf le premier champ.
Le premier champ est une entrée de saisie semi-automatique. Quand ils sélectionnent quelque chose, il est désactivé, puis définit le deuxième champ à activer. Le deuxième champ est une liste déroulante. Le problème est qu'après qu'un utilisateur a utilisé le formulaire et cliqué sur le bouton Précédent, il passe à un état similaire à celui dans lequel il se trouvait avant de cliquer sur soumettre. 1- La saisie semi-automatique est désactivée (mais n'a aucune valeur pour raison) 2- déroulant est activé, et mis à la valeur qu'ils ont soumis avecComment empêcher la réinitialisation de formulaire HTML

J'ai essayé de forcer la restauration du formulaire avec javascript (en utilisant jquery .ready()), mais le .ready() ne fonctionne pas après qu'ils reviennent avec le bouton de retour ..

Actualiser la page après le retour le restaure. Des idées comment je peux résoudre ce problème?

+1

J'ai moi-même rencontré ce problème et j'ai toujours trouvé un meilleur design. Avez-vous envisagé une refonte? – strager

Répondre

1

Le problème est que les navigateurs sont incohérents dans la façon dont ils manipulent le bouton de retour. Firefox, par exemple, met en cache l'état du HTML (traitement post-Javascript) et revient à cet état après avoir appuyé sur le bouton précédent, mais pas d'autres. La meilleure chose à faire pour vous est après le soumettre, vous devez rediriger vers une URL qui contient du HTML représentant les données soumises avec la possibilité de modifier ces détails soumis. Cela donnera à vos utilisateurs moins envie de cliquer sur le bouton de retour.

Edit:

Vous devez également ajouter à votre page:

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

qui est censé empêcher les navigateurs de mettre en cache les modifications de l'état de la page. Je suppose que vous préférez que lorsque l'utilisateur appuie sur le bouton de retour, ils commencent à partir de l'état de début de la page.

+0

c'est une bonne idée. Je vais prendre cela comme une réponse, mais par curiosité, y a-t-il une solution à ce problème? Je pense que cela pourrait être possible avec certains trucs côté serveur (par exemple rafraîchir la page de php quand ils reviennent) – babonk

+0

"mais d'autres ne le font pas." - Je vous suggère de changer cela pour "mais d'autres ne le font pas". Opera fait quelque chose de similaire à ce que Firefox fait (bien que j'aime comment Opera le fait mieux), et il peut y avoir d'autres navigateurs qui gardent l'état, aussi (on pense à Elinks). – strager

+0

Bonne clarification, strager. – Jacob

Questions connexes