在IE10中导航回页面时,孤立的jQuery Datepicker重新出现

Tan*_*ner 6 jquery internet-explorer jquery-ui jquery-ui-datepicker internet-explorer-10

这个问题涉及到Internet Explorer 10,这是我正在测试的,并不影响我当前的版本Firefox or Chrome.

在Internet Explorer中重现的步骤

  1. 导航至:http://jqueryui.com/datepicker/
  2. 单击日期字段以显示 datepicker
  3. 当它打开时,导航到窗口旁边的另一个应用程序窗口IE,然后返回IE并单击datepicker面板中的一些空白空间.
  4. 你应该看到datepicker消失然后重新出现,我认为这必须与最后一次拥有焦点的控件相关,当你点击后重新获得焦点.

我注意到了什么:

  • 如果你最小化和最大化IE,它就不会发生
  • 如果您执行相同的步骤而不单击其他应用程序并直接单击空白区域,则不会发生这种情况
  • 如果您并排或在2台显示器上安装Windows /应用程序,它可以保持一致

虽然我可以接受这是一个小问题而且看起来并不像是一个错误,但在我们的应用程序中它更像是一个问题,它datepicker显示为弹出窗口的一部分,在您点击它之后消失.

父容器的日期选择器:

日期选择器与容器

孤立日期选择器重新出现:

孤儿日期选择器

我尝试过的:

我已经看过有关可见性的帖子,这些帖子datepicker在下面提到了,我测试过:

$("#my-datepicker-div").datepicker('destroy');
$("#my-datepicker-div").datepicker('disable');
Run Code Online (Sandbox Code Playgroud)

即使我很高兴忽略这个边缘情况,它也被提出作为我需要解决的错误.我只是不确定还有什么可以尝试的.

Mat*_*hew 4

我能够通过调用以下命令在 IE 10 中修复(刷新然后关闭,因此有一点闪烁):

$("#datepicker").datepicker("hide");
Run Code Online (Sandbox Code Playgroud)

在 div 关闭时调用的函数中(在这个快速示例中,您在返回到窗口时单击 div 外部)。小提琴示例: http: //jsfiddle.net/anyuG/

要重现您为 IE 10 描述的行为,只需注释掉函数中的该行disablepopup(),您就可以重现孤立的日期选择器窗口。如果您将实际示例发布为小提琴,我们可以使用它。

在这里获取弹出 div 示例:http://istockphp.com/jquery/creating-popup-div-with-jquery/

更新

处理这个问题的另一种方法,看起来更好一点,是使用$(window).blur()$(window).focus()函数。在我看来,这看起来不错,请注意关闭窗口离开,如果您在白色框内单击,则重新打开,如果您在白色框外单击,则重新打开,但全部关闭:

$(window).blur(function(e) {
    $("#datepicker").datepicker("hide");
});
Run Code Online (Sandbox Code Playgroud)

更新了小提琴。也可以.focus()根据您的喜好确定最佳组合,您应该会做得很好。也可能只想检测 IE 10,并且仅在该浏览器中运行此代码。

小提琴: http: //jsfiddle.net/78252/1/