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

jba*_*bey 5 javascript jquery jquery-ui jquery-ui-datepicker

此问题类似于检查datepicker是否已打开,但它与属于其上具有多个datepicker控件的页面有关.

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

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

$('#someDatepicker').datepicker('widget').is(':visible');
Run Code Online (Sandbox Code Playgroud)

无论窗口小部件打开哪个日期选择器,都返回true,只要它在某处可见即可.

jba*_*bey 5

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

inst = $.datepicker._getInst(input);
if ($.datepicker._curInst && $.datepicker._curInst !== inst) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

使用这个代码,我在这些内部对象中挖了一点,然后掀起了一个小提琴.看起来它$.datepicker._curInst.id会为您提供datepicker小部件打开的文本框的ID.

使用风险由您自己承担,因为该对象是内部的和未记录的,并且可以在库的未来版本中更改/移动/删除.