2010-07-09 2 views
0

У меня есть небольшое веб-приложение для викторины для развертывания.Предотвращение или удаление истории с отправкой формы

В основном у меня есть 2 страницы, '1) Страница Quiz' и '2) Страница результатов. После отправки формы Quiz он будет генерировать результат на странице результатов для пользователя. Однако мне нужно, чтобы пользователь не нажал кнопку «Назад» или не нажал клавишу «Backspace» на клавиатуре.

Я исследовал использование «location.replace()», но не имеют ни малейшего представления о том, как я могу реализовать его в моей форме:

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

Я хотел бы знать, есть ли способ для меня, чтобы использовать location.replace() в форме или иным образом, любым другим способом, который я мог бы предотвратить/очистить пользователя от возврата на страницу истории.

спасибо.

+0

Я думаю, что вопрос ошибочный. Вы должны ** не ** возиться с браузером таким образом, тем более, что, вероятно, нет универсального способа, который бы работал в любых обстоятельствах. Вам лучше указать реальную проблему (** почему ** вы не хотите, чтобы пользователь возвращался?) И искать решение, которое решит эту проблему * несмотря на то, что пользователь нажал кнопку «Назад». – deceze

ответ

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

Если вы боитесь, что пользователи вернутся к проверке ответов, а затем повторно заполните форму, я думаю, вы приближаетесь к проблеме с неправильного конца.

Что вам нужно сделать, это дать каждой викторине «сеанс» уникальный идентификатор при запуске. Затем выполните проверку в форме submit, чтобы проверить, уже был ли сеанс викторины. Если он уже представлен, отрицайте это.

Смежные вопросы