Close Bootstrap Modal

JqueryTwitter BootstrapModal Dialog

Jquery Problem Overview


I have a bootstrap modal dialog box that I want to show initially, then when the user clicks on the page, it disappears. I have the following:

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

 <div class="modal" id='modal'>
     <div class="modal-header">
		<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
		<h3 id="myModalLabel">Error:</h3>
		</div>
		<div class="modal-body">
		<p>Please correct the following errors:</p>
		</div>
     </div>
 </div>

The modal is displayed initially, but it does not close when clicked outside of the modal. Also, the content area is not greyed out.. How can I get the modal to display initially, then close after the user clicks outside the area? And how can I get the background to be grayed out as in the demo?

Jquery Solutions


Solution 1 - Jquery

Put modal('toggle') instead of modal(toggle)

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

Solution 2 - Jquery

to close bootstrap modal you can pass 'hide' as option to modal method as follow

$('#modal').modal('hide');

Please take a look at working fiddle here

bootstrap also provide events that you can hook into modal functionality, like if you want to fire a event when the modal has finished being hidden from the user you can use hidden.bs.modal event you can read more about modal methods and events here in Documentation

If none of the above method work, give a id to your close button and trigger click on close button.

Solution 3 - Jquery

$('#modal').modal('toggle'); 

or

$('#modal').modal().hide();

should work.

But if nothing else works you can call the modal close button directly:

$("#modal .close").click()

Solution 4 - Jquery

this worked for me:

<span class="button" data-dismiss="modal" aria-label="Close">cancel</span>

use this link modal close

Solution 5 - Jquery

Try This

$('#modal_id').modal('hide');

Solution 6 - Jquery

$("#your-modal-id").modal('hide');

Running this call via class ($(".my-modal")) won't work.

Solution 7 - Jquery

this one is pretty good and it also works in angular 2

$("#modal .close").click()

Solution 8 - Jquery

You can see this reference but if this link has been removed, read this description:

Call a modal with id myModal with a single line of JavaScript:

$('#myModal').modal(options)

Options

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".

|-----------|-------------|--------|---------------------------------------------|
| Name      | Type        | Default| Description                                 |
|-----------|-------------|--------|---------------------------------------------|
| backdrop  | boolean or  | true   | Includes a modal-backdrop element.          |
|           | the string  |        | Alternatively, specify static for a         |
|           | 'static'    |        | backdrop which doesn't close the modal      |
|           |             |        | on click.                                   |
|           |             |        |                                             |
| keyboard  | boolean     | true   | Closes the modal when escape key is pressed.|   
|           |             |        |                                             |
| focus     | boolean     | true   | Puts the focus on the modal when initialized|       
|           |             |        |                                             |
| show      | boolean     | true   | Shows the modal when initialized.           |
|-----------|-------------|--------|---------------------------------------------|

Methods

> Asynchronous methods and transitions > > All API methods are asynchronous and start a transition. They return > to the caller as soon as the transition is started but before it ends. > In addition, a method call on a transitioning component will be > ignored. > > See our JavaScript documentation for more information.

.modal(options)

Activates your content as a modal. Accepts an optional options object.

$('#myModal').modal({
   keyboard: false
})

.modal('toggle')

Manually toggles a modal. Returns to the caller before the modal has actually been shown or hidden (i.e. before the shown.bs.modal or hidden.bs.modal event occurs).

$('#myModal').modal('toggle')

.modal('show')

Manually opens a modal. Returns to the caller before the modal has actually been shown (i.e. before the shown.bs.modal event occurs).

$('#myModal').modal('show')

.modal('hide')

Manually hides a modal. Returns to the caller before the modal has actually been hidden (i.e. before the hidden.bs.modal event occurs).

$('#myModal').modal('hide')

.modal('handleUpdate')

Manually readjust the modal’s position if the height of a modal changes while it is open (i.e. in case a scrollbar appears).

$('#myModal').modal('handleUpdate')

.modal('dispose')

Destroys an element’s modal.

Events

Bootstrap’s modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the **

Solution 9 - Jquery

My five cents on this one is that I don't want to have to target the bootstrap modal with an id and seeing as there should be only one modal at a time the following should be quite sufficient to remove the modal as toggle could be dangerous:

$('.modal').removeClass('show');

Solution 10 - Jquery

In some circumstances typing error could be the culprit. For instance, make sure you have:

data-dismiss="modal"

and not

data-dissmiss="modal"

Notice the double "ss" in the second example that will cause the Close button that fail.

Solution 11 - Jquery

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script>
$(window).load(function(){
      $('#myModal').modal('show');
});
$(function () {
   $('#modal').modal('toggle');
});
</script>
</head>
<body>

<div class="container">
  <h2>Modal Example</h2>
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>

  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <p>Some text in the modal.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>

</body>
</html>

Solution 12 - Jquery

$('.modal.in').modal('hide');

use the above code to hide the backdrop of modal if you are using multiple modal pop in one page.

Solution 13 - Jquery

We can close the modal pop-up in the following ways:

// We use data-dismiss property of modal-up in html to close the modal-up,such as
         
<div class='modal-footer'><button type='button' class="btn btn-default" data-dismiss='modal'>Close</button></div>
     
 // We can close the modal pop-up through java script, such as
    
 <div class='modal fade pageModal'  id='openModal' tabindex='-1' data-keyboard='false' data-backdrop='static'>
    
    $('#openModal').modal('hide'); //Using modal pop-up Id.
    $('.pageModal').modal('hide'); //Using class that is defined in modal html.

Solution 14 - Jquery

   function Delete(){
       var id = $("#dgetid").val();
       debugger
       $.ajax({
           type: "POST",
           url: "Add_NewProduct.aspx/DeleteData",
           data: "{id:'" + id + "'}",
           datatype: "json",
           contentType: "application/json; charset=utf-8",
           success: function (result) {
               if (result.d == 1) {
                   bindData();
                   setTimeout(function(){ $('#DeleteModal').modal('hide');},1000);
               }
           }
       });
   };

Solution 15 - Jquery

> I closed modal Programmatically with this trick

Add a button in modal with data-dismiss="modal" and hide the button with display: none. Here is how it will look like

<div class="modal fade" id="addNewPaymentMethod" role="dialog">
  <div class="modal-dialog">
   .
   .
   .
   <button type="button" id="close-modal" data-dismiss="modal" style="display: none">Close</button>
  </div>
</div>

Now when you want to close modal Programmatically just trigger a click event on that button, which is not visible to user

In Javascript you can trigger click on that button like this:

document.getElementById('close-modal').click();

Solution 16 - Jquery

After some test, I found that for bootstrap modal need to wait for some time before executing the $(.modal).modal('hide') after executing $(.modal).modal('show'). And i found in my case i need at least 500 milisecond interval between the two.
So this is my test case and solution:

$('.modal-loading').modal('show');
setTimeout(function() {
  $('.modal-loading').modal('hide');
}, 500);

Solution 17 - Jquery

Another way of doing this is that first you remove the class modal-open, which closes the modal. Then you remove the class modal-backdrop that removes the grayish cover of the modal.

Following code can be used:

$('body').removeClass('modal-open')
$('.modal-backdrop').remove()  

Solution 18 - Jquery

you can use;

$('#' + $('.modal.show').attr('id')).modal('hide');

Solution 19 - Jquery

Using modal.hide would only hide the modal. If you are using overlay underneath the modal, it would still be there. use click call to actually close the modal and remove the overlay.

$("#modalID .close").click()

Solution 20 - Jquery

In my case, I used a button to show the modal

<button type="button" class="btn btn-success" style="color:white"
    data-toggle="modal" data-target="#my-modal-to-show" >
    <i class="fas fa-plus"></i> Call MODAL
</button>

So in my code, to close the modal (that has the id = 'my-modal-to-show') I call that function (in Angular typescript):

closeById(modalId: string) {
  $(modalId).modal('toggle');
  $(modalId+ ' .close').click();
}

If I call $(modalId).modal('hide') it does't work and I don't know why

PS.: in my modal I coded that button element with .close class too

<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
    <span aria-hidden="true">&times;</span>
</button>

Solution 21 - Jquery

This works for me. I'm a newbie so, Please ignore my usage of JQuery and Vanilla JavaScript together.

document.addEventListener("click",function(){
        $(".modal").modal('hide');
        });

Solution 22 - Jquery

This code worked perfectly for me to close a modal (i'm using bootstrap 3.3)

$('#myModal').removeClass('in')

Solution 23 - Jquery

In my case, main page from where bootstrap modal was triggered started to not responding after using $("#modal").modal('toggle'); way, but started responding in the following way:

$("#submitBtn").on("click",function(){
  $("#submitBtn").attr("data-dismiss","modal");
});

Solution 24 - Jquery

This works well

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

However, when you have multiple modals stacking on top one another it is not effective, so instead , this works

data-dismiss="modal"

Solution 25 - Jquery

Just add this in modal

div tabindex="-1"

Solution 26 - Jquery

Besides, you can "click" on a 'x', that closes dialog. E.g.:

$(".ui-dialog-titlebar-close").click();

Solution 27 - Jquery

some times the solution up doesn't work so you d have properly to remove the in class and add the css display:none manually .

$("#modal").removeClass("in");
$("#modal").css("display","none");

Solution 28 - Jquery

my answer is not strictly related to question like many others above. But these conversations helped me to figure out why my bootstrap modal doesn't react when I click on a very general close button while it still closed it when I pressed the ESC button.

<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>

It might help someone.

If you put into your code (in some special cases it makes sense):

$modal.off('click')

then it also results that the modal won't be closed because the event is blocked.

In that case you have to handle it yourself:

$modal
  .on('click', '[data-dismiss="modal"]', function() {
      $modal.modal('hide');
  });

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNick BView Question on Stackoverflow
Solution 1 - JqueryTamil Selvan CView Answer on Stackoverflow
Solution 2 - JquerySubodh GhulaxeView Answer on Stackoverflow
Solution 3 - JqueryRobert BenyiView Answer on Stackoverflow
Solution 4 - JquerysanthoshView Answer on Stackoverflow
Solution 5 - JqueryLove KumarView Answer on Stackoverflow
Solution 6 - JqueryYishai LandauView Answer on Stackoverflow
Solution 7 - Jqueryuser3869304View Answer on Stackoverflow
Solution 8 - JquerySajad MirzaeiView Answer on Stackoverflow
Solution 9 - JqueryAndre Van ZuydamView Answer on Stackoverflow
Solution 10 - JqueryzinczincView Answer on Stackoverflow
Solution 11 - JqueryGanesh PuttaView Answer on Stackoverflow
Solution 12 - Jquerysher bahadurView Answer on Stackoverflow
Solution 13 - JquerySheo Dayal SinghView Answer on Stackoverflow
Solution 14 - JquerySheladiya AjayView Answer on Stackoverflow
Solution 15 - JqueryZohab AliView Answer on Stackoverflow
Solution 16 - Jqueryibrahim saputraView Answer on Stackoverflow
Solution 17 - JqueryOrozcorpView Answer on Stackoverflow
Solution 18 - JqueryPhatyh T.View Answer on Stackoverflow
Solution 19 - JqueryVikalp VeerView Answer on Stackoverflow
Solution 20 - JqueryAnderson Dourado CunhaView Answer on Stackoverflow
Solution 21 - JquerydankladView Answer on Stackoverflow
Solution 22 - Jqueryuser3870075View Answer on Stackoverflow
Solution 23 - JqueryMuhammad AwaisView Answer on Stackoverflow
Solution 24 - JqueryEdgar256View Answer on Stackoverflow
Solution 25 - JqueryAhmedView Answer on Stackoverflow
Solution 26 - JqueryslashkaView Answer on Stackoverflow
Solution 27 - Jqueryعبد الرحمان بويشوView Answer on Stackoverflow
Solution 28 - JqueryZoltán SüleView Answer on Stackoverflow