If I may direct people to this thread instead of repeating the post:
http://forums.mozillazine.org/viewtopic.php?t=470263
I was told to ask here about this issue. Basically, the behaviour FF has of "remembering" form values after hitting refresh seems to interfere with DHTML apps that need to keep DHTML manipulations on the page "in sync" with hidden field values that are modified at the same time.
When the user hits "refresh", the DHTML is reset (e.g. element visibility) but hidden form fields keep values that were set in Javascript which, after the refresh, are no longer in sync with how the page looks. I hope I've explained that well enough.
Any ideas how to get around this? I've implemented a javascript function which resets all hidden form fields on page load, to get around someone hitting refresh - is that the only solution?
The whole thing about FF remembering form values, including hidden ones, isn't very friendly to DHTML apps. I've suggested implementing a new FORM attribute called RETAINVALUES which could be set to "NO", to overcome this issue without having to resort to special javascript to reset everything.
Refresh retains form values - useful or troublesome?
-
- Posts: 671
- Joined: December 12th, 2004, 8:40 am
- Location: Oz
-
- Posts: 387
- Joined: September 6th, 2006, 1:39 pm
- Contact:
-
- Posts: 671
- Joined: December 12th, 2004, 8:40 am
- Location: Oz
-
- Posts: 387
- Joined: September 6th, 2006, 1:39 pm
- Contact:
Please, could you explain what do you want?
I've given you a solution as an end-user and also as a programmer, if none of those answers are useful to you, then I don't understand what you need.
You seem to suggest a new attribute (that idea will never be accepted), but I have show you the actual attribute that does the job now. Or you could change the code so instead of using hidden inputs you just use javascript variables to keep track of javascript changes.
I've given you a solution as an end-user and also as a programmer, if none of those answers are useful to you, then I don't understand what you need.
You seem to suggest a new attribute (that idea will never be accepted), but I have show you the actual attribute that does the job now. Or you could change the code so instead of using hidden inputs you just use javascript variables to keep track of javascript changes.
- Robin_reala
- Posts: 1344
- Joined: September 7th, 2003, 1:21 pm
- Location: Guildford, UK
- Contact:
-
- Posts: 671
- Joined: December 12th, 2004, 8:40 am
- Location: Oz
Hi Robin. I wasn't aware that cache directives stop FF from remembering form values after hitting refresh. If that's the case, it's a good solution, thanks heaps. I'll check to see if that works.
Aitan, sorry for any confusion, but perhaps read the original post I linked to above, it explains the problem in detail. Using ctrl-refresh or turning autocomplete=off isn't really an end-user solution - they aren't going to know or care to do that just to use a web page.
Your idea of using JS variables instead of hidden fields is appreciated but hidden fields still need to be used. For example, while javascript will visibly remove a row from a table, a hidden field must still be used to tell the server code to delete that row from the database. When refresh is hit, the page *visibly* resets itself (i.e. "deleted" table rows reappear), but hidden field values are not reset. Hence a row's hidden value could still say it should be deleted yet the row is now visible on the screen (implying it won't be deleted). That's the problem in a nutshell, not sure how else I can explain it.
Aitan, sorry for any confusion, but perhaps read the original post I linked to above, it explains the problem in detail. Using ctrl-refresh or turning autocomplete=off isn't really an end-user solution - they aren't going to know or care to do that just to use a web page.
Your idea of using JS variables instead of hidden fields is appreciated but hidden fields still need to be used. For example, while javascript will visibly remove a row from a table, a hidden field must still be used to tell the server code to delete that row from the database. When refresh is hit, the page *visibly* resets itself (i.e. "deleted" table rows reappear), but hidden field values are not reset. Hence a row's hidden value could still say it should be deleted yet the row is now visible on the screen (implying it won't be deleted). That's the problem in a nutshell, not sure how else I can explain it.
- Robin_reala
- Posts: 1344
- Joined: September 7th, 2003, 1:21 pm
- Location: Guildford, UK
- Contact:
Antic - I don't actually know if that's the case but the form control caching is part of bfcache, so you might want to have a look at http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching