2010-02-10 55 views
1

我有一个脚本,生成一个模式对话框,在里面,我想把一个jQuery的UI日期选择器。我目前使用下面的代码:jQuery的日期选择器的Ajax内容失败后第一次加载

$('#datepicker').live('click', function() { 
    $(this).datepicker({showOn:'both'}).focus(); 
}); 

哪个就好了工作,我第一次打开对话框,然后单击分配了“日期选择器”的ID输入框中。

问题是,我关闭该对话框(它从DOM中删除它的标记)并重新打开它后,datepicker不再起作用。

我已经尝试在关闭对话框后调用$('#datepicker')。die(),然后在重新打开它时重新绑定到#datepicker输入,但似乎也不起作用。

我真的难住这个。任何有识之士将不胜感激。

+0

有一点需要注意:使用如“日期选择器”简单的标识符,当您加载动态内容到对话框中可能会出现问题。例如,如果你有两个对话框,并且都有一个日期选择器,那么你在页面中用“datepicker”的“id”结束了两件事 - 那很糟糕。我从这里讲述经验:-)除此之外,很难说没有看到更多细节的例子。 – Pointy 2010-02-10 21:31:42

回答

0

我的猜测是从DOM中删除触发元素是你的问题。为什么不只是hide你的模态窗口,然后show它当你需要?我相信这会照顾你的问题。

+0

不幸的是,这不是一个真正的选择,因为触发模态窗口的内容也会改变,并且模态对话框的内容会根据父内容+后端的xml而变化。每当我们需要它时,重新生成对话就更容易了。我知道这听起来令人费解,而且我们也有点不同,但是我必须在内部有一些非常严格的限制,可悲的是,超出了我的控制范围。 虽然你给了我一个想法。我会尝试使用DOM内已存在(隐藏)的内容替换#datepicker输入,并查看是否有这个技巧。 谢谢。 – 2010-02-11 01:00:06

0

原来,使用类而不是ID(即'.datepicker'而不是'#datepicker')修复了问题,即使DOM上只有一次#datepicker发生。

即使如此,它只有在附加了.datepicker类的另一个隐藏输入时才有效。

所以这是两种建议的组合,它修复了它。

感谢你们的帮助!

+0

这似乎并不适用于我,因为插入的标记放置到位后JavaScript不运行。 – 2010-11-17 21:02:06

1

今天帮了我。 我有同样的问题。我在对话框中通过它的id重新初始化相同的元素。第一次,我把对话框起来了。此后它不会。所以,只要给元素执行$(".datepicker").datepicker()之后的类datepicker,每次我重新打开对话框就可以解决问题。

记得把这个类在样式表即:

.datepicker {} 
相关问题