如何判断微件打开的是哪个日期选择器

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

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

我正在尝试找到一种方法,通过DatePicker UI或其他方式,找出小部件针对哪个DatePicker打开。不幸的是,经过验证的测试,例如:

$('#someDatepicker').datepicker('widget').is(':visible');
无论小部件为哪个DatePicker打开,只要它在某处可见,都返回TRUE。


解决方案

在source code for datepicker中爬行后,我在第718行附近找到了一些相关代码:

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

使用此代码,我更深入地研究了这些内部对象,并生成了一个fiddle。看起来$.datepicker._curInst.id将为您提供DatePicker小部件打开的文本框的ID。

使用风险自负,因为该对象是内部对象且未记录,可能会在库的未来版本中进行更改/移动/删除。

相关文章