2010-07-09 171 views
0

我有一个小测验Web应用程序要部署。通过表单提交阻止或清除历史记录

基本上我有2页,'1)测验页'和'2)结果页'。提交测验表单后,它将在用户的结果页面上生成结果。不过,我需要阻止用户点击后退按钮或键入键盘上的退格键。

我研究使用“location.replace()”,但不知道如何将我的表格内实现:

<form id="quiz" name="quiz" method="post" action="result.php"> 
... 
<input type="submit" name="Submit" value="Submit" /> 
</form> 

我想知道是否有任何办法,我用在表单中的location.replace(),或其他方式,我可以阻止/清除用户回到历史记录页面。

谢谢。

+0

我认为这个问题是错误的。你不应该**用这种方式修改浏览器,特别是因为在任何情况下都可能没有通用的方法。你应该说明真正的问题(**为什么**不想让用户回去?)并寻找解决方案来解决这个问题,尽管用户点击后退按钮。 – deceze 2010-07-09 03:27:08

回答

1

没有办法阻止用户在他/她的浏览器中点击“返回”。完成目标的一种方法是使用AJAX提交表单。当他/她点击回来时,它不会进入测验,而是进入前一页。

下完全正常的工作示例使用jQuery库:

<html><head></head><body> 
    <div id="form_wrap"> 
    <form onsubmit="send_form(this);return false"> 
     ... 
     <input type="submit" /> 
    </form> 
    </div> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script> 
    function send_form(form) { 
     jQuery.post('result.php', jQuery(form).serialize(), function(data) { 
     jQuery('#form_wrap').html(data); 
     }); 
    } 
    </script> 
</body></html> 
3

如果你害怕用户回头检查答案,然后重新提交表单,我认为你是从错误的一端接近问题。

你需要做的是在启动时给每个测验“会话”一个唯一的ID。然后检查表单提交,看看测验会话是否已经提交。如果它已经提交,否认它。