Alert for unsaved changes in form

前端 未结 7 1913
谎友^
谎友^ 2020-11-30 18:47

I want to write Jquery code in master file, so that if there if user changes page and there is any unsaved changes user should get alert. I got one answer from this: link

7条回答
  •  难免孤独
    2020-11-30 19:07

    Why not simply bind the event to the change callback?

    $(":input").change(function()
    {
        $(window).unbind('unload').bind('unload',function()
        {
            alert('unsaved changes on the page');
        });
    });
    

    As an added bonus, you can use confirm and select the last element that triggered the change event:

    $(":input").change(function()
    {
        $(window).unbind('unload').bind('unload',(function(elem)
        {//elem holds reference to changed element
            return function(e)
            {//get the event object:
                e = e || window.event;
                if (confirm('unsaved changes on the page\nDo you wish to save them first?'))
                {
                    elem.focus();//select element
                    return false;//in jQuery this stops the event from completeing
                }
            }
        }($(this)));//passed elem here, I passed it as a jQ object, so elem.focus() works
        //pass it as , then you'll have to do $(elem).focus(); or write pure JS
    });
    

    If you have some save button, make sure that that unbinds the unload event, though:

    $('#save').click(function()
    {
        $(window).unbind('unload');
        //rest of your code here
    });
    

提交回复
热议问题