“settings”为null或不是对象(jquery ui datepicker)

时间:2010-12-23 16:10:03

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

我有一个通过simplemodal弹出窗口显示的表单,其中一个表单元素是一个jquery ui datepicker。如果你打开表单,选择一个日期,关闭模式,然后再次打开表单,并尝试选择一个日期,我得到一个javascript错误(IE8),这是在帖子的标题。我没有在其他浏览器上测试它,因为我现在在工作,但我需要在IE8上工作。

可以在http://jsbin.com/uzewi4/10

找到引发此错误的代码示例

我不是很擅长javascript,但是我假设simplemodal在关闭模式时会破坏或做一些奇怪的事情,这会导致datepicker崩溃。我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是SimpleModal。来自the docs

  

克隆和元素删除   
默认情况下,SimpleModal将克隆您传入的数据元素。当对话框关闭时,克隆的未更改的数据元素将在其原始位置重新插入DOM。如果persist选项为true,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,包括模态......