2012-03-01 96 views
1

我已经在网上搜索,但找不到任何解决方案。 当我点击'samplepage.php'上的'提交'按钮时,我将页面重定向到'newpage.php'页面。当用户点击浏览器的后退按钮时,我想重置'samplepage.php'表单值。现在它保留了所有的文本框值,单选按钮和复选框选择。如果有任何建议,请让我知道吗?谢谢你的帮助。重置后退按钮上的表格

这是我的重定向php代码。

header ("location:newpage.php); 
+0

你在做什么网页浏览器测试? – user17753 2012-03-01 21:30:42

+0

你可以在'onload'事件中使用窗体的'reset()'方法... – Yaniro 2012-03-01 21:31:43

+0

我必须支持所有的浏览器。 – nav100 2012-03-01 21:35:01

回答

0

您无法使用服务器端代码观看浏览器的后退按钮。

需要Javascript和jQuery用在如“popstate”一知半解和“pushState的”舞台

+1

jQuery对此没有必要。 :/ – Snuffleupagus 2012-03-01 21:37:25

+0

它不是'必需的',但是OP对客户端代码有明显的理解,您不会推荐一个库,也可能是一个polyfill? – Relic 2012-03-01 21:40:16

+0

也许,与其向人们提供一个4线解决方案的90k库,我们应该考虑人们有思想能力;如果他们在这里想要传递代码而没有理解它是如何工作的,那么他们在错误的地方开始。 – Snuffleupagus 2012-03-01 21:47:15

-1

清除在页面加载的值。

<input type="text" id="ClearIt" value=""/> 

将此放在口主体标签:

onload="document.getElementById('ClearIt').value=''" 
0

这事关系到浏览器。

您可以清空输入在最后时刻(提交前),并把值一些隐藏的领域...

0

你必须清除它在页面加载如果你真的想这样做。如果您有多个控件,则需要在表单中循环以清除它。假设他们所有项目...

var elems = document.getElementsByTagName("input") 
for (var i=0;i<elems.length;i++) 
{ 
    elems[i].value = ''; 
} 

它让所有的输入控件,遍历所有这些,将它们的值空白。 您可以通过设置.checked取决于它们的类型来扩展它以用于单选按钮/复选框。

只是我的两分钱问题,虽然,这是一个坏主意,清除表单。浏览器保留它所做的状态是有原因的。

例如,如果服务器端的验证失败,我不得不返回并重新输入所有内容,我不会很高兴。 :(

0

你忘死()

header ("location:newpage.php"); 
die(); 

您也可以尝试重置$ _ POST,$ _ GET和$ _SESSION瓦尔

unset($_POST,$_SESSION, $_GET); 
header ("location:newpage.php); 
die(); 

更新:刚刚看了你想在历史背景上取消设置 ,我没有意识到在我的 上面的代码中...

您将不得不ww请使用一些标记代码来清除与输入字段相关的 变量并选择表格的列表 。

无论如何。JS

function clearForm(formIdent) 
{ 
    var form, elements, i, elm; 
    form = document.getElementById 
    ? document.getElementById(formIdent) 
    : document.forms[formIdent]; 

    if (document.getElementsByTagName) 
    { 
     elements = form.getElementsByTagName('input'); 
     for(i=0, elm; elm=elements.item(i++);) 
     { 
      if (elm.getAttribute('type') == "text") 
      { 
       elm.value = ''; 
      } 
     } 
     elements = form.getElementsByTagName('select'); 
     for(i=0, elm; elm=elements.item(i++);) 
     { 
      elm.options.selectedIndex=0; 
     } 
    } 

    // Actually looking through more elements here 
    // but the result is the same. 
    else 
    { 
     elements = form.elements; 
     for(i=0, elm; elm=elements[i++];) 
     { 
      if (elm.type == "text") 
      { 
       elm.value =''; 
      } 
     } 
    } 
} 

function addEvent(elm, strEvent, fnHandler) 
{ 
    return (elm.addEventListener 
    ? elm.addEventListener(strEvent, fnHandler, false) 
    : elm.attachEvent('on'+strEvent, fnHandler) 
    ); 
} 

在表单股利

<script type="text/javascript"> 
    // <![CDATA[ 
    var el = document.createElement("input"); 
    el.setAttribute("id", "clearButton"); 
    el.setAttribute("type", "button"); 
    el.setAttribute("value", "Clear"); 
    document.getElementById("FormDiv").appendChild(el); 
    addEvent(el, 'click', function(){ clearForm('form_name');}); 
    // ]]> 
</script> 
0

另外,您也可以使用HTML事件“onunload的”做同样的事情海报建议之前。从你的角度来看,在你开火的时候可能并不重要。