Php IE8在点击后退按钮后用错误的数据填充表单字段

Php IE8在点击后退按钮后用错误的数据填充表单字段,php,html,forms,internet-explorer-8,Php,Html,Forms,Internet Explorer 8,我需要的是: 用户加载页面(输入为空) 用户提供一些输入并提交 输入有它们的新值 用户向后导航 输入有其以前的值 我的php文件如下所示: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <form id="formTest" name="formTest" acti

我需要的是:

  • 用户加载页面(输入为空)
  • 用户提供一些输入并提交
  • 输入有它们的新值
  • 用户向后导航
  • 输入有其以前的值
我的php文件如下所示:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    <form id="formTest" name="formTest" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" autocomplete="off">
        <select id="selectTest" name="selectTest">
            <option value=0 <?php if(isset($_POST['selectTest']) && $_POST['selectTest']==0){echo 'selected=\'selected\'';} ?>>Select an option...</option>
            <option value=1 <?php if(isset($_POST['selectTest']) && $_POST['selectTest']==1){echo 'selected=\'selected\'';} ?>>Option 1</option>
            <option value=2 <?php if(isset($_POST['selectTest']) && $_POST['selectTest']==2){echo 'selected=\'selected\'';} ?>>Option 2</option>        
        </select>
        <br/>
        <input id="inputTest" name="inputTest" type="text" value="<?php if(isset($_POST['inputTest'])){echo htmlentities($_POST['inputTest']);} ?>" />          
        <br/>
        <input type="submit" value="OK" />
    </form>
    <?php
        print_r($_POST);
    ?>
</body>
</html>


如果您通过某种持久结构(我想到的是会话范围)运行它们,您可以将其设置为表单上的条件。因此,如果它没有看到表单变量(post用于传递和查询表单内容)。因此,该语句将替换post-isset,并检查结构“session”(或其他一些作用域)是否存在,以及是否存在填充。有道理?我希望这会有所帮助。

如果您通过某种持久结构(我想到的是会话范围)运行它们,您可以在表单中将其设置为条件。因此,如果它没有看到表单变量(post用于传递和查询表单内容)。因此,该语句将替换post-isset,并检查结构“session”(或其他一些作用域)是否存在,以及是否存在填充。有道理?我希望这会有所帮助。

听起来您希望表单始终显示您在PHP中回显的值?一个快速而肮脏的修复方法是在页面加载时重置表单:

<body onload="document.forms[0].reset();">

您可能需要为不同的页面结构更新onload属性,或者如果您的实际应用程序使用jQuery并为表单提供一个ID,那么您可以更优雅地进行更新

我相信也有一种方法可以关闭IE中每个字段的自动完成/历史记录。我得用谷歌搜索一下。编辑:好的,我做了。。。看起来您具有IE正在查找的表单属性。我不认为这实际上是一个自动完成的问题,因为后退按钮试图重新创建页面的最后状态。。。包括用户所做的更改,特别是填写字段

以下是jQuery方法,用于在文档准备就绪时重置表单(包括后退按钮)。。。奇怪的是,jQuery并没有实现表单的reset()方法,所以[0]得到了原始DOM元素。把这些线条加到你的头上;如果可用且首选,请在服务器上替换本地jquery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(function(){$("#formTest")[0].reset();});
</script>

$(function(){$(“#formTest”)[0].reset();});

听起来您希望表单始终显示您在PHP中回显的值?一个快速而肮脏的修复方法是在页面加载时重置表单:

<body onload="document.forms[0].reset();">

您可能需要为不同的页面结构更新onload属性,或者如果您的实际应用程序使用jQuery并为表单提供一个ID,那么您可以更优雅地进行更新

我相信也有一种方法可以关闭IE中每个字段的自动完成/历史记录。我得用谷歌搜索一下。编辑:好的,我做了。。。看起来您具有IE正在查找的表单属性。我不认为这实际上是一个自动完成的问题,因为后退按钮试图重新创建页面的最后状态。。。包括用户所做的更改,特别是填写字段

以下是jQuery方法,用于在文档准备就绪时重置表单(包括后退按钮)。。。奇怪的是,jQuery并没有实现表单的reset()方法,所以[0]得到了原始DOM元素。把这些线条加到你的头上;如果可用且首选,请在服务器上替换本地jquery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
$(function(){$("#formTest")[0].reset();});
</script>

$(function(){$(“#formTest”)[0].reset();});

非常感谢!这就是我要找的。我使用这个小javascript函数重置表单:函数resetForm(id){$('#'+id)。每个(函数(){this.reset();})}非常感谢!这就是我要找的。我使用这个小javascript函数重置表单:函数resetForm(id){$('#'+id)