Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
135
rated 0 times [  138] [ 3]  / answers: 1 / hits: 87098  / 11 Years ago, sat, november 2, 2013, 12:00:00

If the dropdown is visible, and I click outside the dropdown it closes. I need it to not close.



From the documentation:




When opened, the plugin also adds .dropdown-backdrop as a click area for closing dropdown menus when clicking outside the menu.




What JavaScript can I add to prevent the drop down from closing?


More From » jquery

 Answers
12

From the events section of the Bootstrap dropdown documentation:




hide.bs.dropdown: This event is fired immediately when the hide instance method has been called.




For starters, to prevent the dropdown from closing, we can just listen to this event and stop it from proceeding by returning false:



$('#myDropdown').on('hide.bs.dropdown', function () {
return false;
});





For a complete solution, you probably want to allow it to close when the dropdown itself is clicked. So only some of the time we'll want to prevent the box from closing.



To do this we'll set .data() flags in two more events raised by the dropdown:




  • shown.bs.dropdown - When shown, we'll set .data('closable') to false

  • click - When clicked, we'll set .data('closable') to true



Thus, if the hide.bs.dropdown event was raised by a click on the dropdown, we'll allow a close.



Live Demo in jsFiddle



JavaScript



$('.dropdown.keep-open').on({
shown.bs.dropdown: function() { this.closable = false; },
click: function() { this.closable = true; },
hide.bs.dropdown: function() { return this.closable; }
});


HTML (note I've added the class keep-open to the dropdown)



<div class="dropdown keep-open">
<!-- Dropdown Button -->
<button id="dLabel" role="button" href="#" class="btn btn-primary"
data-toggle="dropdown" data-target="#" >
Dropdown <span class="caret"></span>
</button>

<!-- Dropdown Menu -->
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</div>

[#74550] Thursday, October 31, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
felixa

Total Points: 180
Total Questions: 113
Total Answers: 108

Location: Palau
Member since Sat, Aug 21, 2021
3 Years ago
;