2010-07-09 108 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。然後檢查表單提交,看看測驗會話是否已經提交。如果它已經提交,否認它。