重置后退按钮上的表单

时间:2012-03-01 21:27:18

标签: php javascript jquery

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

这是我的重定向php代码。

header ("location:newpage.php);  

6 个答案:

答案 0 :(得分:0)

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

你需要在'popstate'和'pushstate'竞技场中掌握一点知识的Javascript和jQuery

答案 1 :(得分:0)

这与浏览器有关。

您可以在最后时刻(提交前)清空输入并将值放在一些隐藏的字段中......

答案 2 :(得分:0)

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

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

它获取所有输入控件,遍历所有输入控件并将其值设置为空白。 您可以通过根据类型设置.checked来扩展它以适用于单选按钮/复选框。

这个问题只是我的两分钱,清除表格是个坏主意。浏览器保留他们所处的状态是有原因的。

例如,如果验证在服务器端失败,我必须返回并重新输入所有内容,我将不满意。 :(

答案 3 :(得分:0)

你忘了死()

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

你也可以尝试重置$ _POST,$ _GET和$ _SESSION vars

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

更新:刚刚读到你试图取消设置 在历史上,我没有意识到在我的 以上代码...

你必须写一些标记代码才能清除 与输入字段和选择关联的变量 表单列表。

Whatever.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)
    );
}

在Form Div中

<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>

答案 4 :(得分:0)

或者你也可以使用HTML事件'onunload'来做海报之前提出的相同的事情。从你的角度来看,当你解雇事件时,这可能并不重要。

答案 5 :(得分:-1)

清除页面加载时的值。

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

将其放在开始身体标记中:

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