我正在使用JQuery UI datepicker,但不是将 datepicker 附加到input[type=text]
元素,而是将它附加到input[type=hidden]
元素。为了激活 datepicker,我在 UI 上使用了一个远程按钮,它不是 datepicker 所附加的输入元素的兄弟。
为了显示日期选择器,我使用了一个单击事件处理程序来执行此代码
$('input.trial_end_date').datepicker('show');
这可以显示日期选择器,但是每当我单击日期时,我都会得到一个未捕获的 javascript 异常:
Uncaught Missing instance data for this datepicker jquery-ui-1.10.1.custom.min.js:6
e.extend._getInst jquery-ui-1.10.1.custom.min.js:6
e.extend._selectDay jquery-ui-1.10.1.custom.min.js:6
t.selectDay jquery-ui-1.10.1.custom.min.js:6
v.event.dispatch localhost.local/:5
o.handle.u localhost.local/:5
但是,如果我将 更改input[type=hidden]
为 aninput[type=text]
以允许日期选择器显示输入元素何时聚焦,则所有单击事件都会毫无问题地触发(直到我通过按钮激活日期选择器,然后无论日期选择器以哪种方式激活,它们都会失败)。
有没有更可靠的方法来通过远程按钮激活日期选择器并隐藏日期的输入元素?我不确定为什么会抛出这个异常。
这是一个在JSFiddle中不起作用的示例。不过,例外情况并不相同。经过进一步研究,我似乎找到了原因,我将在下面的答案中添加。