如何判断小部件打开的日期选择器

时间:2013-05-21 15:40:47

标签: javascript jquery jquery-ui jquery-ui-datepicker

此问题与Check if datepicker is open类似,不同之处在于它与一个页面上有多个日期选择器控件。

当页面上有多个日期选择器时,jQuery UI似乎只创建一个在所有日期选择器之间共享的日期选择器小部件。

我试图通过datepicker UI或其他方式找到一种方法来找出小部件打开的日期选择器。不幸的是,尝试过的真实测试如:

$('#someDatepicker').datepicker('widget').is(':visible');
无论窗口小部件打开哪个日期选择器,

都返回true,只要它在某处可见即可。

1 个答案:

答案 0 :(得分:5)

在浏览source code for datepicker后,我在第718行找到了一些相关代码:

inst = $.datepicker._getInst(input);
if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
    ...
}

使用这段代码,我对这些内部对象进行了更多挖掘,然后掀起了fiddle。看起来$.datepicker._curInst.id将为您提供datepicker小部件打开的文本框的ID。

使用风险由您自己承担,因为该对象是内部的,没有文档,可以在库的未来版本中更改/移动/删除。