我有一个通过simplemodal弹出窗口显示的表单,其中一个表单元素是一个jquery ui datepicker。如果你打开表单,选择一个日期,关闭模式,然后再次打开表单,并尝试选择一个日期,我得到一个javascript错误(IE8),这是在帖子的标题。我没有在其他浏览器上测试它,因为我现在在工作,但我需要在IE8上工作。
找到引发此错误的代码示例我不是很擅长javascript,但是我假设simplemodal在关闭模式时会破坏或做一些奇怪的事情,这会导致datepicker崩溃。我有什么想法可以解决这个问题吗?
答案 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;
});
偏离主题:FWIW,jQuery UI本身有一个非常好的dialog mechanism,包括模态......