【问题标题】:jQuery datepicker keeps reopening in IEjQuery datepicker 不断在 IE 中重新打开
【发布时间】:2011-08-16 20:55:15
【问题描述】:

在 IE 8 中单击日期后,jQuery 的日期选择器会不断重新打开,即使在他们的演示页面上也是如此:

http://jqueryui.com/demos/datepicker/

有谁知道如何解决这个问题?我不知道演示页面,但我在使用 jQuery 1.6.2 和 jQuery UI 1.8.15 时遇到了完全相同的问题。

此外,设置 minDate 和 maxDate 选项在 IE 8 中似乎没有任何效果。 以上似乎也适用于 IE 7。

【问题讨论】:

  • 我刚刚遇到了同样的问题。它似乎是 1.8.15 中引入的新行为。我正在寻找解决方法。
  • 降级到 jQuery UI 1.8.14 为我完成了这项工作。
  • 1.8.16 的“稳定”版本也修复了这个问题。
  • 谢谢!我猜 1.8.16 刚从烤箱里出来。 ;-)

标签: internet-explorer jquery-ui internet-explorer-8 datepicker


【解决方案1】:

以下为我解决了这个问题(使用 jQuery 1.7.2 / jQueryUI 1.8.20)

var $input = $('#date');

$input.datepicker({
  /* 
   * your other settings here 
   */
  onSelect : function() { $input.blur(); },
  onClose  : function() { $input.change(); }
});

$input.on('change paste', function(evt) {
  // process new date input here
});

【讨论】:

  • 您也可以在onSelectonClose 的回调函数中使用$(this)
  • @koiyu,您可以,但随后您将再次调用 jQuery 构造函数来为输入元素创建一个新实例。使用缓存实例更有效。
【解决方案2】:

1.8.14 works fine 在 IE8 中。

重开好像是1.8.15的bug,见broken demo

【讨论】:

  • 谢谢!我降级到 1.8.14,它修复了日历重新打开问题。希望有人能解决 minDate 和 maxDate 问题。
  • 好的,minDate 和 maxDate 是我的错误。我以错误的格式传递了日期。我通过 new Date('2011-08-16') 而不是 Date('08-18-2011') 作为 minDate 选项。
  • 很高兴你解决了另一部分。我搜索了 jQuery UI 错误列表,但没有与您找到的内容相匹配。如果我找不到现有的错误,我明天会自己提出。
【解决方案3】:

我在使用 IE8 和 Jquery UI 1.8.16 的自定义最小版本时遇到了同样的问题(选择了所有选项)当我使用 1.8.16 的完整发布版本时,问题就消失了。

【讨论】:

  • 感谢您的投入!我会确保我使用的是完整版。
【解决方案4】:

我们在 jquery ui 1.11.2 中面临同样的问题。以下 sn-p 解决了我们案例中的问题:

var input = $('<input>');

input.datepicker({
  onSelect: function() {
    this.lastShown = new Date().getTime();
  },
  beforeShow: function() {
    var time = new Date().getTime();
    return this.lastShown === undefined || time - this.lastShown > 500;
  }
});

【讨论】:

    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2013-09-08
    • 2017-11-22
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多