У меня есть поле с дампикером. Я хочу знать, открыт ли он. Я пробовал с:
$("#filter_date").datepicker( "widget" ).is(":visible")
но он всегда возвращает true.
Как проверить, открыта ли она?
У меня есть поле с дампикером. Я хочу знать, открыт ли он. Я пробовал с:
$("#filter_date").datepicker( "widget" ).is(":visible")
но он всегда возвращает true.
Как проверить, открыта ли она?
Это может быть возможной ошибкой в прошлом. Теперь это решение
$("#filter_date").datepicker( "widget" ).is(":visible")
отлично работает
Просто установите:
#ui-datepicker-div { display: none; }
в вашем файле CSS и вашем коде:
$("#filter_date").datepicker( "widget" ).is(":visible")
будет работать правильно!
Сверху моей головы я мог бы подумать об использовании beforeShow и onClose события, определенные для элемента управления datepicker для переключения класса (или флага) где-нибудь и проверки наличия для определения того, открыт ли элемент управления datepicker или нет.
Доступ к атрибуту стиля 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');
}
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");
}
}