检查datepicker是否已打开

时间:2010-05-06 09:17:23

标签: jquery-ui datepicker

我有一个带有日期选择器的字段。我想知道它是否开放。我试过了:

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

但它总是返回true。

如何检查它是否已打开?

6 个答案:

答案 0 :(得分:32)

这可能是过去可能存在的错误。现在这个解决方案

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

完美运作

答案 1 :(得分:9)

只需设置:

#ui-datepicker-div { display: none; }
CSS文件中的

和您的代码:

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

可以正常使用!

答案 2 :(得分:4)

在我的脑海中,我可以考虑使用为datepicker控件定义的beforeShowonClose事件在某处切换类(或标志),并检查其存在确定datepicker控件是否打开。

答案 3 :(得分:1)

访问datepicker的style属性,并在隐藏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');
}

答案 4 :(得分:1)

这样做吧。

$('.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');
    }
});

答案 5 :(得分:0)

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

我已经使用这种方法在点击按钮时切换日期选择器。 isCalendarVisible更新“show”&相应地“隐藏”datepicker。我检查'isCalendarVisible'的值来手动打开或关闭它。

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