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
- 用户加载页面(输入为空)
- 用户提供一些输入并提交
- 输入有它们的新值
- 用户向后导航
- 输入有其以前的值
<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)