最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Prevent bootstrap-3 modal from closing when the form has changes - Stack Overflow

programmeradmin1浏览0评论

I'm trying to prevent the bootstrap-3 modal from closing without warning when there are changes made to the form inside the modal. However when I listen to the events fired by the modal and return false it will prevent the modal from closing ever. Here's my code:

$(function() {
    $('body').live('shown.bs.modal', '#quickbutton-create', function () {
        $(this).find('#quickbutton-create form').monitor();
    });

    $('body').live('hide.bs.modal', '#quickbutton-create', function () {
        if ($(this).find('#quickbutton-create form').monitor('has_changed')) {
            if (!confirm('Are you sure?')) {
                return false;
            }
        }
    });
});

So in short, in this case; how do I prevent the modal from closing just this once.

I'm trying to prevent the bootstrap-3 modal from closing without warning when there are changes made to the form inside the modal. However when I listen to the events fired by the modal and return false it will prevent the modal from closing ever. Here's my code:

$(function() {
    $('body').live('shown.bs.modal', '#quickbutton-create', function () {
        $(this).find('#quickbutton-create form').monitor();
    });

    $('body').live('hide.bs.modal', '#quickbutton-create', function () {
        if ($(this).find('#quickbutton-create form').monitor('has_changed')) {
            if (!confirm('Are you sure?')) {
                return false;
            }
        }
    });
});

So in short, in this case; how do I prevent the modal from closing just this once.

Share Improve this question asked Mar 6, 2014 at 10:26 Allard StijnmanAllard Stijnman 1,34412 silver badges24 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

Ok so I figured it out, instead of return false I needed to event.preventDefault()

jsfiddle here: http://jsfiddle/ACYBv/1/

$(function() {
    $('.modal').on('shown.bs.modal, loaded.bs.modal', function(e) {
        // set form state
        $(this).data('form-data', $(this).find('form').serialize());
    });

    $('.modal').on('hide.bs.modal', function(e) {        
        // check if the form data was changed since the modal was openened
        if($(this).data('form-data') != $(this).find('form').serialize()) {
            if(!confirm('you sure??')) {
                e.preventDefault();
            }
        }
    });
});
发布评论

评论列表(0)

  1. 暂无评论