Skip to content Skip to sidebar Skip to footer

Bootstrap Modal Inside Modal Background Scrolling

I have a modal with a long content and a button that opens another modal. When I close the inner modal, the outer modal is stuck. It cannot be scrolled, rather the background begin

Solution 1:

Edit your javascript to leave first modal open like this -

    $('#btnUploadCancel').click(function () {
    $('#uploadImage').modal('toggle');

    $('body').addClass('modal-open');
});

Solution 2:

$('.modal').on('show.bs.modal', function (event) {
        var idx = $('.modal:visible').length;
        $(this).css('z-index', 1040 + (10 * idx));
    });
    $('.modal').on('shown.bs.modal', function (event) {
        var idx = ($('.modal:visible').length) - 1; // raise backdrop after animation.
        $('.modal-backdrop').not('.stacked').css('z-index', 1039 + (10 * idx));
        $('.modal-backdrop').not('.stacked').addClass('stacked'); 
    });
   $('.modal').on('hide.bs.modal', function (event) { 
        var modal_length =  $('.modal:visible').length;
        if (modal_length>1)
        {
            $("body").css("overflow","hidden");
            $('.modal:visible').css("overflow-y","auto");
        }
    });

Solution 3:

Bootstrap modal when shown adds a new modal-open class to your body element. And when being closed, it removes the modal-open class.

So you only need to re-apply that class to your body element when closing the child modal. Here's the thing:

Add a new custom css class for the modals inside your parent modal.

in my case, I use .child-modal,

/* when using a modal within a modal, add this class on the child modal */
$(document).find('.child-modal').on('hidden.bs.modal', function () {
    console.log('hiding child modal');
    $('body').addClass('modal-open');
});

html

<divclass="modal fade"tabindex="-1"role="dialog">
     ...
     <ahref="#"data-toggle="modal"data-target="#other_modal"title="Help">
       Open the other modal
     </a>
     ...
</div><divclass="modal fade child-modal"id="other_modal"tabindex="-1"role="dialog">
   ... other codes here ...
</div>

See working snippet below:

$('#btnUploadCancel').click(function() {
  $('#uploadImage').modal('toggle');
});


$(document).find('.child-modal').on('hidden.bs.modal', function () {
    console.log('hiding child modal');
    $('body').addClass('modal-open');
});
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script><linkhref="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css"rel="stylesheet"/><buttonclass="btn btn-primary btn-lg"data-toggle="modal"data-target="#myModal">Open demo modal</button><p>
  Lorem ipsum .... long content
</p><divclass="modal"id="myModal"tabindex="-1"role="dialog"aria-labelledby="myModalLabel"aria-hidden="false"><divclass="modal-dialog modal-sm"><divclass="modal-content"><divclass="modal-header"><buttontype="button"class="close"data-dismiss="modal"aria-hidden="true">×</button><h4class="modal-title"id="myModalLabel">Demo Modal</h4></div><divclass="modal-body"><p><ahref="#"data-toggle="modal"data-target="#uploadImage"class="btn btn-primary">Upload image</a></p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
        <p></p></div><divclass="modal-footer"><buttontype="button"class="btn btn-default"data-dismiss="modal">Close</button></div></div></div><divclass="modal child-modal"id="uploadImage"tabindex="-1"role="dialog"aria-labelledby="uploadImage-title"aria-hidden="true"><divclass="modal-dialog modal-sm"><divclass="modal-content"><divclass="modal-header"><buttontype="button"class="close"data-dismiss="modal"aria-hidden="true">×</button><h4class="modal-title"id="uploadImage-title">Upload new image</h4></div><divclass="modal-body">
          Testing Area
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
          orem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborumorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
        </div><divclass="modal-footer"><buttontype="button"class="btn btn-default"id="btnUploadCancel">Cancel</button><buttontype="button"class="btn btn-success">Accept</button></div></div></div></div></div>

Post a Comment for "Bootstrap Modal Inside Modal Background Scrolling"