6

这个问题与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');

尽管我很乐意忽略这种极端情况,但它还是作为我需要修复的错误提出的。我只是不确定还有什么可以尝试的。

4

1 回答 1

4

我可以通过调用以下方法在 IE 10 中修复(刷新然后关闭,所以有一点闪烁):

$("#datepicker").datepicker("hide");

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

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

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

更新

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

$(window).blur(function(e) {
    $("#datepicker").datepicker("hide");
});

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

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

于 2014-02-21T18:27:35.467 回答