我需要的是:
我的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数组具有先前状态的值,但浏览器使用下一个状态的数据填充字段(使用提交后的数据)。
虽然我可以通过关闭表单的自动完成属性在Chrome和Firefox中解决此问题,但这在IE8中没有结果。
任何建议都会非常感谢!
答案 0 :(得分:1)
听起来您希望表单始终显示您在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>
答案 1 :(得分:0)
如果您通过某种持久性结构运行它们(会话范围可以想到),您可以将其设置为表单上的条件。因此,如果它没有看到表单变量(这是用于传递和查询表单内容的帖子)。因此该语句将替换post isset,而是检查struct'session'(或其他一些范围)是否存在,如果是,则填充。合理?我希望这会有所帮助。