【问题标题】:"settings" is null or not an object (jquery ui datepicker)“设置”为空或不是对象(jquery ui datepicker)
【发布时间】:2010-12-23 16:10:03
【问题描述】:

我有一个通过简单模式弹出窗口显示的表单,其中一个表单元素是 jquery ui datepicker。如果您打开表单,选择一个日期,关闭模式,然后再次打开表单并尝试选择一个日期,我在帖子标题中收到一个 javascript 错误 (IE8)。由于我目前正在工作,因此我尚未在其他浏览器上对其进行测试,但我需要在 IE8 上使用它。

可以在http://jsbin.com/uzewi4/10找到引发此错误的代码示例

我不太擅长 javascript,但我假设 simplemodal 在您关闭模式时正在破坏或做一些奇怪的事情,这会导致日期选择器中断。有什么想法可以解决这个问题吗?

【问题讨论】:

  • 可以链接到事物的实时版本,但在您的实际问题中包含代码。 StackOverflow 是独立的。链接的资源可能会消失、移动等。此外,人们不应该必须点击链接来阅读您的问题。 (如果他们愿意,他们可以,他们不应该必须这样做。)

标签: jquery jquery-ui datepicker simplemodal jquery-ui-datepicker


【解决方案1】:

这是简单模式。来自the docs

克隆和删除元素
默认情况下,SimpleModal 将克隆您传入的数据元素。当对话框关闭时,克隆的、未更改的数据元素将重新插入到原始位置的 DOM 中。如果persist 选项为真,SimpleModal 将“重新插入”原始元素,更改保持不变。

所以它正在克隆元素,然后用克隆替换它们。显然DatePicker 并不期望会发生这种情况(可以理解)。

非常奇怪的行为,但添加 persist: true 会使您的示例工作:

$('.start').click(function (e) {
  $('#startform').modal({
    opacity:50,
    overlayCss: {backgroundColor:"#000"},
    overlayClose:true,
    persist: true             // <== This is the new bit
    });
  return false;
});  

http://jsbin.com/uzewi4/11

题外话:FWIW,jQuery UI 本身有一个非常漂亮的dialog mechanism,包括模态...

【讨论】:

  • 太棒了。没有注意到文档上的那个部分(为什么它都在一页上,我不知道)。也不知道 jQuery UI 的对话框功能,所以这是一个额外的好处,但 simplemodal 已经在这个当前项目的所有地方使用。
  • Dominic - 我一直想让 SimpleModal 文档更实用,我什至注册了 SimpleModal.com。不幸的是,我只是没有时间……但感谢您的提醒;)
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多