How to prevent “Are you sure you want to navigate away from this page?” alert on form submission?

前端 未结 4 578
清酒与你
清酒与你 2021-01-06 11:03

I have a simple html form with few fields in it.

I wanted to make sure that user gets an alert message when he is trying to leave the page. So I added the script on

相关标签:
4条回答
  • 2021-01-06 11:32

    Try this: http://cfsilence.com/blog/client/index.cfm/2009/10/12/jQuery-Method-To-Prompt-A-User-To-Save-Changes-Before-Leaving-Page

    I added another bit to the function:

     $('#submitButton').click(function () {
            isDirty = false;
    });
    

    Just so the form doesn't ask for validation when you want to submit it :)

    I hope this helps

    Note: You could also do something like $("input[type=submit]") if you don't like to depend on a common naming (else your submit button needs to be called submitButton)

    0 讨论(0)
  • 2021-01-06 11:33

    Try this:

    $(window).bind("beforeUnload", verify);
    $("form").submit(function (){
        $(window).unbind("beforeUnload");
    };
    
    0 讨论(0)
  • 2021-01-06 11:40

    Try this:

    <form action="c.html" onsubmit="window.onbeforeunload=function(){}">
    
    0 讨论(0)
  • 2021-01-06 11:48

    stackoverflow reference

    To turn it on:

    window.onbeforeunload = "Are you sure you want to leave?";
    

    To turn it off:

    window.onbeforeunload = null;
    

    Bear in mind that this isn't a normal event - you can't bind to it in the standard way.

    To check for values? That depends on your validation framework.

    In jQuery this could be something like (very basic example):

    $('input').change(function() {
        if( $(this).val() != "" )
            window.onbeforeunload = "Are you sure you want to leave?";
    });
    

    With JQuery this stuff is pretty easy to do. Since you can bind to sets.

    Its NOT enough to do the onbeforeunload, you want to only trigger the navigate away if someone started editing stuff.

    To make this work in Chrome and Safari, you would have to do it like this

    window.onbeforeunload = function (e) {
        e = e || window.event;
    
        var msg = "Sure you want to leave?";
    
        // For IE and Firefox prior to version 4
        if (e) {
            e.returnValue = msg;
        }
    
        // For Safari
        return msg;
    };
    


    This is the general rule in reference

    window.onbeforeunload = function (e) {
      e = e || window.event;
    
      // For IE<8 and Firefox prior to version 4
      if (e) {
        e.returnValue = 'Any string';
      }
    
      // For Chrome, Safari, IE8+ and Opera 12+
      return 'Any string';
    };
    

    reference: https://developer.mozilla.org/en/DOM/window.onbeforeunload

    0 讨论(0)
提交回复
热议问题