ingh.am
ingh.am

Reputation: 26742

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?

Upvotes: 9

Views: 6307

Answers (2)

Piskvor left the building
Piskvor left the building

Reputation: 92752

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!

Upvotes: 5

archil
archil

Reputation: 39491

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

Upvotes: 9

Related Questions