Подтвердить что ты не робот

Проверьте, открыт ли датапикер

У меня есть поле с дампикером. Я хочу знать, открыт ли он. Я пробовал с:

$("#filter_date").datepicker( "widget" ).is(":visible")

но он всегда возвращает true.

Как проверить, открыта ли она?

4b9b3361

Ответ 1

Это может быть возможной ошибкой в ​​прошлом. Теперь это решение

$("#filter_date").datepicker( "widget" ).is(":visible")

отлично работает

Ответ 2

Просто установите:

#ui-datepicker-div { display: none; }

в вашем файле CSS и вашем коде:

$("#filter_date").datepicker( "widget" ).is(":visible")

будет работать правильно!

Ответ 3

Сверху моей головы я мог бы подумать об использовании beforeShow и onClose события, определенные для элемента управления datepicker для переключения класса (или флага) где-нибудь и проверки наличия для определения того, открыт ли элемент управления datepicker или нет.

Ответ 4

Доступ к атрибуту стиля datepicker и сравнение его со стилем, когда datepicker скрыт (display: none):

var datePickerStyle = $('.datepicker').attr('style');
var noneStyle = 'display: none;';
if(datePickerStyle.indexOf(noneStyle) != -1){
     console.log('shown');
} else {
     console.log('not shown');
}

Ответ 5

   var isCalendarVisible;     
   $(".datepicker).datepicker().on("show", function () {
          isCalendarVisible = true;
    }).on("hide", function () {
          isCalendarVisible = false;
    });

Я использовал этот подход для переключения выбора даты при нажатии кнопки. isCalendarVisible соответственно обновляется на 'show' и 'hide' datepicker. Я проверяю значение "isCalendarVisible", чтобы открыть или закрыть его вручную.

    function toggleCalendar() {
        if (isCalendarVisible) {
            $(".datepicker .add-on").datepicker("hide");
        } else {
            $(".datepicker .add-on").datepicker("show");
        }
    }