jQuery UI对话框上的Datepicker在第二次打开对话框时失败

时间:2018-08-21 17:07:58

标签: javascript jquery-ui jquery-ui-datepicker jquery-ui-dialog

我有一个带有链接的静态页面,该链接打开一个加载子页面的模式对话框。子页面包括带有Datepicker小部件的输入。

当我第一次打开对话框时,子页面会加载,并且Datepicker会出现并正常运行。

当我关闭对话框并再次打开它时,将加载子页面,但不会显示Datepicker,并且没有报告的错误。我认为这可能是因为Dialog在关闭时会留下残余物,因此重新打开它会再次加载到子页面中,但Datepicker会忽略重复的实例。

对话框的设置/调用很简单:

$("a#Popup").click(function() {
  var subpage = $("div#SubPage")
    .dialog({ autoOpen: false, width: 480, minHeight: 280, modal: true });
  var addr = $("a#Popup").attr('href');
  subpage.load(addr);
  subpage.dialog('open');
  return false;
});

是否有适当的方法可以关闭对话框,以便将其干净地删除并仍可以再次打开?我尝试使用destroy(),但是Dialog再次运行时遇到问题。

我确实注意到,由于Dialog将其生成的代码放在页面的form标记之后,因此可以使用以下命令将其全部删除:

$("form").nextAll().remove();

所以我可以在Dialog的close事件中尝试该事件,尽管它很骇人。

1 个答案:

答案 0 :(得分:0)

jQuery的DatePicker有一些奇怪的怪癖。 Fit.UI(内部使用jQuery的DatePicker)对此进行了补偿,并在移动设备上提供了本机体验,添加了各种额外功能,并提供了传统的面向对象的API。因此,如果您可以使用非“纯jQuery”解决方案,请考虑以下问题:https://fitui.org/Control-DatePicker.html

(我有偏见-我使用Fit.UI)

如果要使用更新的软件包,则应将其安装在npm上,或者从GitHub下载最新版本。

相关问题