2010-04-16 25 views
0

J'ai actuellement un formulaire qui vérifie si un utilisateur a des modifications non soumises lorsqu'il quitte la page avec une fonction appelée via l'événement onunload. Voici la fonction:Javascript onunload formulaire submit n'envoie pas de données

function saveOnExit() { 
    var answer = confirm("You are about to leave the page. All unsaved work will be lost. Would you like to save now?"); 
    if (answer) { 
     document.main_form.submit(); 
    } 
} 

Et voici la forme:

<body onunload="saveOnExit()"> 
<form name="main_form" id="main_form" method="post" action="submit.php" onsubmit="saveScroll()"> 
    <textarea name="comments"></textarea> 
    <input type="submit" name="submit2" value="Submit!"/> 
</form> 

Je ne sais pas ce que je fais mal ici. Les données sont soumises et enregistrées dans ma base de données si je clique simplement sur le bouton de soumission pour le formulaire. Cependant, essayer de soumettre le formulaire via l'événement onunload n'entraîne aucun stockage, d'après ce que je peux dire. J'ai essayé d'ajouter des alertes onclick au bouton de soumission et d'envoyer des alertes aux éléments de formulaire et je peux vérifier que le bouton de soumission est déclenché et que le formulaire est envoyé. Cependant, rien n'est passé stocké dans la base de données. Des idées sur ce que je fais mal?

Merci.

Répondre

3

Essayez onbeforunload

Un événement qui se déclenche avant l'événement Unload lorsque la page est déchargée.

Indiquez également return false à la fin de la fonction pour l'état dans lequel les données ne doivent pas être soumises.

+0

Merci pour la suggestion onbeforeunload. J'ai retweaké mon code et l'ai fait fonctionner différemment. – holic87