Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop user from leaving web page, except for when submitting form

To stop the user from leaving my page, I'm using this javascript:

window.onbeforeunload = function()
{
  if($('textarea#usermessage').val() != '')
  {
    return "You have started writing a message.";
  }
};

This shows a message warning the user not to leave the page because they've started writing a message but not submitted. This shows up to save the user from losing this data.

Now, how can I stop this message from showing up when the form is submitted?

like image 257
ingh.am Avatar asked Jul 08 '11 08:07

ingh.am


2 Answers

function handleWindowLeaving(message, form) {
    $(window).bind('beforeunload', function (event) {
        return message;
    });
    $(form).bind('submit', function () {
        $(window).unbind('beforeunload');
    });
};

when calling this, pass your message and the form reference, and it will automatically remove onbeforeunload when submitting the form. Otherwise, show message to user

like image 130
archil Avatar answered Sep 28 '22 19:09

archil


Set a flag in your form's submit handler; check whether the flag is set in your unload handler. If it is - voila, it's a form submit!

like image 33
Piskvor left the building Avatar answered Sep 28 '22 18:09

Piskvor left the building