/ / Zabráňte prepínaniu rozbaľovacej ponuky funkciou bootstrap - javascript, jquery, twitter-bootstrap, rozbaľovacie menu, toggleclass

Zabráňte funkcii bootstrap z rozbaľovacej ponuky - javascript, jquery, twitter-bootstrap, drop-down-menu, toggleclass

Konvertoval som bootstrap navbar na panel nástrojov a upravil rozbaľovaciu ponuku (vlastne dropup) tak, aby obsahovala 2 DatePicker prvky: tu zadajte popis obrázku

Problém je v tom, že keď vyberiem dátum, rozbaľovacia ponuka sa zrúti. Moje riešenie (som otvorený pre ostatných) je vytvoriť funkciu, ktorá otvorí rozbaľovaciu ponuku pridaním triedy "otvorené" a pridanie tejto funkcie do funkcie datepicker close ().

function leaveOpen(){
$("#dropdownMenu2").trigger("focus").attr("aria-expanded", "true");
$("#rangeDropdown").addClass("open");
}(jQuery);

Táto funkcia funguje správne, ale existuje iná funkcia bootstrap, ktorá prepína medzi "otvorené" trieda hneď späť:

Dropdown.prototype.toggle = function (e) {
var $this = $(this)
if ($this.is(".disabled, :disabled")) return
var $parent  = getParent($this)
var isActive = $parent.hasClass("open")
clearMenus()

if (!isActive) {
...
var relatedTarget = { relatedTarget: this }
$parent.trigger(e = $.Event("show.bs.dropdown", relatedTarget))
...
$this
.trigger("focus")
.attr("aria-expanded", "true")

$parent
.toggleClass("open")
.trigger("shown.bs.dropdown", relatedTarget)
}

Tento JavaScript ma trochu ohromil. Čo k tomu dodať leaveOpen () aby sa zabránilo "otvorené" triedy od prepínania v rámci "Dropdown.prototype.toggle = funkcia (e)"?

odpovede:

0 pre odpoveď č. 1

Skontrolovať to: https://jsfiddle.net/hoffmanc/y6sho3nv/9/

Existujú dva požadované preventívne mechanizmy AFAIK:

1) Zastavte skrytie rozbaľovacej ponuky po kliknutí na textové pole datepicker:

$(".datepicker").on("click", function (e) {
e.stopPropagation();
});

ref: https://stackoverflow.com/a/8178945/338303

2) Zastavte skrytie rozbaľovacej ponuky po kliknutí na dátum v samotnom kalendári:

$(".dropdown").on("hide.bs.dropdown", function (e) {
if($(".datepicker-dropdown").length > 0) {
return false;
}
});

ref: https://stackoverflow.com/a/19797577/338303