在后退按钮上重置表单


reset the form on back button

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

这是我的重定向php代码。

header ("location:newpage.php);  

当浏览器由于导航而显示窗口的文档时,pageshow事件会发送到窗口。这包括:从同一窗口或选项卡中的另一个页面导航到页面

在浏览器返回按钮上显示事件和重置表单的示例

<script>
$(window).bind("pageshow", function() {
    $('#yourformid').trigger("reset");
});
</script>

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

您需要Javascript和jQuery对"popstate"answers"pushstate"竞技场有一点了解

这与浏览器有关。

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

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

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

它获取所有的输入控件,在它们之间循环,并将它们的值设置为空。您可以根据单选按钮/复选框的类型设置.checked,从而将其扩展为适用于单选按钮/选中框。

不过,就我的两美分而言,清除表单是个坏主意。浏览器保留其状态是有原因的。

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

或者,您也可以使用HTML事件"onunload"来做与之前海报建议的相同的事情。从你的角度来看,什么时候启动活动可能并不重要。

您忘记了死亡()

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

在形式分区

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

清除页面加载时的值。

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

将其放入打开的正文标签:

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