2010-07-09 3 views
0

j'ai une petite application web de quiz pour déployer.Prévenir ou l'histoire raccrochage avec la soumission du formulaire

Fondamentalement j'ai 2 pages, '1) page Quiz' et '2) Résultat page. En soumettant le formulaire Quiz, il générera le résultat sur la page de résultats pour l'utilisateur. Cependant, je dois empêcher l'utilisateur de cliquer sur le bouton de retour ou de saisir Backspace sur le clavier.

je l'ai étudié l'utilisation de « location.replace() », mais ne sais pas comment puis-je mettre en œuvre dans ma forme:

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

Je voudrais savoir s'il y a un moyen pour moi d'utiliser location.replace() dans le formulaire, ou autrement, de toute autre manière que je pourrais empêcher/empêcher l'utilisateur de revenir à la page d'historique.

Merci.

+0

Je pense que la question est mal orienté. Vous ne devriez pas ** bricoler avec le navigateur de cette façon, d'autant plus qu'il n'y a probablement pas de façon universelle qui fonctionne dans toutes les circonstances de toute façon. Vous devriez plutôt dire le vrai problème (** pourquoi ** vous ne voulez pas l'utilisateur de revenir en arrière?) Et chercher une solution qui va résoudre ce problème * malgré * l'utilisateur appuyant sur le bouton arrière. – deceze

Répondre

1

Il n'y a aucun moyen d'empêcher un utilisateur de cliquer sur « Retour » dans son/son navigateur. Une façon d'accomplir le but est de soumettre le formulaire en utilisant AJAX. Quand il/elle clique en arrière, il ne va pas au quiz mais à la page précédente.

L'exemple suivant entièrement travail utilise la bibliothèque 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

Si vous avez peur des utilisateurs qui vont le contrôle de retour des réponses resoumettre alors la forme, je pense que vous approchez le problème de la mauvaise fin.

Ce que vous devez faire est de donner à chaque jeu-questionnaire « session » un identifiant unique au démarrage. Faites ensuite une vérification sur le formulaire pour vérifier si la session de test a déjà été soumise. S'il a déjà été soumis, refusez-le.

Questions connexes