2

我有一个带有表单的页面,其中许多字段都是从 URL 中传递的变量中填充的。这些字段被禁用(不可编辑)并且仅供用户查看。

其余字段需要用户输入并且未被禁用(可编辑)。提交表单后,会出现一个确认页面。在这种情况下,用户可能需要提交几个这样的表单,其中不可编辑的信息在不同的表单中是相同的,因此能够从确认页面返回到表单页面将节省大量时间。

我希望它工作的方式是当用户按下后退按钮时,所有 NON-EDITABLE 字段都被填充,但 EDITABLE 字段为空白。这就是 Firefox 正在做的事情,但 IE8 不会“忘记”在 EDITABLE 字段中输入的内容。

要禁用缓存,以下内容会出现在页面的开头和页面的末尾。

<head>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http-equiv="Cache-Control" content="no-store"/>
<head/>

当按下后退按钮时,我还需要做什么才能让 IE 忘记在 EDITABLE 字段中输入的内容?

如果重要的话,我所有的页面都是用 PHP 生成的。

编辑:

在我看来,这是 IE 缓存我的页面的问题,即使我已经告诉它不要这样做。我的meta标签正确吗?我是否需要做其他事情来防止 IE 缓存我的页面?

4

3 回答 3

2

您是否尝试将autocomplete='off'属性添加到表单字段?

例如这样的:

<input type='text' name='myfield' size='10' autocomplete='off'>
于 2011-01-06T17:40:08.900 回答
1

我找到了这个代码片段,它似乎做了我想做的事。

    <input type="hidden" id="refreshed" value="no"/>
    <script type="text/javascript">

        onload=function(){
            var e=document.getElementById("refreshed");
            if(e.value=="no"){
                e.value="yes";
            }

            else{
                e.value="no";
                location.reload();
            }

        }

    </script>   

更新:

上述解决方案在 IE 中有效,但我发现它在 Firefox 中无法正常工作。进一步探索这种情况,我终于在一些 SO 帮助下解决了我的问题。下面是一个更好的解决方案,把它放在你的DOCTYPE标题之上。更多细节在这里

<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
于 2011-01-06T18:38:19.353 回答
0

为什么不直接重定向回表单,而不是让他们点击后退按钮(有一个链接说“输入更多”可以返回表单)?

这样,当页面加载时,您可以将输入默认设置为空白值

例子

<input type="textbox" name="somename" value="">
于 2011-01-06T18:25:53.497 回答