如何判断微件打开的是哪个日期选择器
此问题类似于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。
使用风险自负,因为该对象是内部对象且未记录,可能会在库的未来版本中进行更改/移动/删除。
相关文章