Capture close event on Bootstrap Modal

后端 未结 6 2010
轮回少年
轮回少年 2021-02-01 11:52

I have a Bootstrap Modal to select events. If the user clicks on the X button or outside the modal, I would like to send them to the default event. How can I capture these event

相关标签:
6条回答
  • 2021-02-01 12:21

    Though is answered in another stack overflow question Bind a function to Twitter Bootstrap Modal Close but for visual feel here is more detailed answer.

    Source: http://getbootstrap.com/javascript/#modals-events

    0 讨论(0)
  • 2021-02-01 12:21

    This is worked for me, anyone can try it

    $("#myModal").on("hidden.bs.modal", function () {
        for (instance in CKEDITOR.instances)
            CKEDITOR.instances[instance].destroy();
        $('#myModal .modal-body').html('');    
    });
    

    you can open ckEditor in Modal window

    0 讨论(0)
  • 2021-02-01 12:27

    This is very similar to another stackoverflow article, Bind a function to Twitter Bootstrap Modal Close. Assuming you are using some version of Bootstap v3 or v4, you can do something like the following:

    $("#myModal").on("hidden.bs.modal", function () {
        // put your default event here
    });
    
    0 讨论(0)
  • 2021-02-01 12:29

    I tried using it and didn't work, guess it's just the modal versioin.

    Although, it worked as this:

    $("#myModal").on("hide.bs.modal", function () {
        // put your default event here
    });
    

    Just to update the answer =)

    0 讨论(0)
  • 2021-02-01 12:35

    Alternative way to check would be:

    if (!$('#myModal').is(':visible')) {
        // if modal is not shown/visible then do something
    }
    
    0 讨论(0)
  • 2021-02-01 12:38

    I was having this same problem in a web app using Microsoft Visual Studio 2019, Asp.Net 3.1 and Bootstrap 4.5. I had a modal form open to add a new staff person (only a few input fields) and the Add Staff button would invoke an ajax call to create the staff records in the database. Upon successful return the code would refresh the partial razor page of staff (so the new staff person would appear in the list).

    Just before the refresh I would close the Add Staff modal and display a Please Wait modal which only had a bootstrap spinner button on it. What happened is that the Please Wait modal would stay displayed and not close after the staff refresh and the modal('hide') function on this modal was called. Some times the modal would disappear but the modal backdrop would remain effectively locking the Staff List form.

    Since Bootstrap has issues with multiple modals open at once, I thought maybe the Add Staff modal was still open when the Please Wait modal was displayed and this was causing problems. I made a function to display the Please Wait modal and do the refresh, and called it using the Javascript function setTimeout() to wait 1/2 second after closing/hiding the Add Staff modal:

    //hide the modal form
    $("#addNewStaffModal").modal('hide');
    setTimeout(RefreshStaffListAfterAddingStaff, 500); //wait for 1/2 second
    

    Here is the code for the refresh function:

    function RefreshStaffListAfterAddingStaff() {
        // refresh the staff list in our partial view
    
        //show the please wait message
        $('#PleaseWaitModal').modal('show');
    
        //refresh the partial view
        $('#StaffAccountsPartialView').load('StaffAccounts?handler=StaffAccountsPartial',
            function (data, status, jqXGR) {
    
                //hide the wait modal
                $('#PleaseWaitModal').modal('hide');
                // enable all the fields on our form
                $("#StaffAccountsForm :input").prop("disabled", false);
    
                //scroll to the top of the staff list window
                window.scroll({
                    top: 0,
                    left: 0,
                    behavior: 'smooth'
                });
    
            });
    }
    

    This seems to have totally solved my problem!

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