Предотвратить переключение функции начальной загрузки в раскрывающемся списке

Я преобразовал панель навигации начальной загрузки в панель инструментов и изменил раскрывающийся список (фактически раскрывающийся список), чтобы он содержал 2 datepicker элементы: введите здесь описание изображения

Проблема в том, что когда я выбираю дату, раскрывающийся список сворачивается. Мое решение (я открыт для других) состоит в том, чтобы создать функцию, которая открывает раскрывающийся список, добавив класс 'open' и добавив эту функцию в функцию datepicker close().

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

Эта функция работает правильно, но есть еще одна функция начальной загрузки, которая сразу отключает класс 'open':

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)
}

Я немного ошеломлен этим JavaScript. Что я могу добавить в leaveOpen(), чтобы класс 'open' не переключался внутри 'Dropdown.prototype.toggle = function (e)' ?


person Nate May    schedule 17.07.2015    source источник
comment
jsfiddle этот зверь!   -  person Coding Enthusiast    schedule 17.07.2015
comment
Мне удалось воспроизвести то, с чем, как мне кажется, вы столкнулись: jsfiddle.net/hoffmanc/y6sho3nv/6.   -  person hoffmanc    schedule 18.07.2015


Ответы (1)


Проверьте это: https://jsfiddle.net/hoffmanc/y6sho3nv/9/

На мой взгляд, необходимы два механизма предотвращения:

1) Остановите скрытие раскрывающегося списка при нажатии на текстовое поле выбора даты:

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

ссылка: https://stackoverflow.com/a/8178945/338303

2) Остановите скрытие раскрывающегося списка при нажатии даты в самом календаре:

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

ссылка: https://stackoverflow.com/a/19797577/338303

person hoffmanc    schedule 18.07.2015