【发布时间】:2011-02-16 07:37:57
【问题描述】:
我有一个带有日期选择器的字段。我想知道它是否开放。我试过了:
$("#filter_date").datepicker( "widget" ).is(":visible")
但它总是返回 true。
如何检查它是否打开?
【问题讨论】:
标签: jquery-ui datepicker
我有一个带有日期选择器的字段。我想知道它是否开放。我试过了:
$("#filter_date").datepicker( "widget" ).is(":visible")
但它总是返回 true。
如何检查它是否打开?
【问题讨论】:
标签: jquery-ui datepicker
这可能是过去可能存在的错误。现在这个解决方案
$("#filter_date").datepicker( "widget" ).is(":visible")
完美运行
【讨论】:
简单设置:
#ui-datepicker-div { display: none; }
在您的 CSS 文件和您的代码中:
$("#filter_date").datepicker( "widget" ).is(":visible")
会正常工作!
【讨论】:
在我的脑海中,我可以想到使用为 datepicker 控件定义的 beforeShow 和 onClose 事件在某处切换类(或标志),并检查其是否存在以确定datepicker 控件是否打开。
【讨论】:
var isCalendarVisible;
$(".datepicker).datepicker().on("show", function () {
isCalendarVisible = true;
}).on("hide", function () {
isCalendarVisible = false;
});
我已经使用这种方法在单击按钮时切换日期选择器。 isCalendarVisible 相应地更新日期选择器的“显示”和“隐藏”。我检查“isCalendarVisible”的值以手动打开或关闭它。
function toggleCalendar() {
if (isCalendarVisible) {
$(".datepicker .add-on").datepicker("hide");
} else {
$(".datepicker .add-on").datepicker("show");
}
}
【讨论】:
访问日期选择器的样式属性,并与隐藏日期选择器时的样式进行比较(显示:无):
var datePickerStyle = $('.datepicker').attr('style');
var noneStyle = 'display: none;';
if(datePickerStyle.indexOf(noneStyle) != -1){
console.log('shown');
} else {
console.log('not shown');
}
【讨论】:
这样做。
$('.inputCalendar').datepicker({
dateFormat: "yy-mm-dd",
monthNames: [ "01","02","03","04","05","06","07","08","09","10","11","12" ],
monthNamesShort: [ "1","2","3","4","5","6","7","8","9","10","11","12" ],
dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
dayNamesShort: ["(Sun)", "(Mon)", "(Tue)", "(Wed)", "(Thur)", "(Fri)", "(Sat)"],
yearSuffix: ".",
showMonthAfterYear: true,
autoSize: true,
minDate : dateMin(),
maxDate : dateMax(),
beforeShow : function(){ //show
$('.date').addClass('active');
},
onClose: function(){ //hide
$('.date').removeClass('active');
}
});
【讨论】: