我非常感谢您的帮助。我已经找了好几个小时的修复方法了,但我就是找不到。
我有两个文件"editor.php"answers"functions.php".
所以我得到了这个Jquery UI日期选择器,我正在初始化它,并在editor.php 中为持有的文本字段提供一个唯一的ID
$(function() {
$('input[name=Date]').attr('id', 'Date' + '_' + $("#Id").val());
$("#Date_" + $('#Id').val()).datepicker({
dateFormat: "dd.mm.yy",
changeMonth: true,
showWeek: true
});
}
我的对话框打开功能在functions.php 中
function openDialog()
{
var customDialog = $('#customDialog').dialog( {
open: function () {
$('body').addClass('stop-scrolling');
$('.ui-widget-overlay').addClass('custom-overlay');
},
beforeClose: function () {
$('body').removeClass('stop-scrolling');
$('.ui-widget-overlay').removeClass('custom-overlay');
},
autoOpen: false,
modal: true,
show: {
effect: "fade",
duration: 400
},
hide: {
effect: "fade",
duration: 400
},
} );
customDialog.load('editor.php');
customDialog.dialog("open");
}
在这个functions.php中,我得到了保存Dialog 的div
<div id="customDialog" title="Editor"></div>
我的对话框中有一个表单,我正在editor.php中构建它。对话框和我的表单数据显示正确。现在,我在该表单中的一个文本字段上有一个日期选择器,它在对话框中运行良好。
现在,我在那个对话框中有一个链接,它打开另一个对话框并关闭旧对话框,这也很好。我现在的问题是,日期选择器将不再显示,但我确信它在那里,因为我可以点击它并按enter键,当前日期将显示在该文本字段上。
我发现我的旧对话框没有正确关闭,我的日期选择器总是绑定到我的第一个对话框中的日期文本字段(即使我再也看不到对话框了)。
$("#customDialog").dialog('close');
这不起作用:"初始化之前无法调用对话框上的方法;尝试调用方法'close'"显示。所以我使用了以下代码,这有点奏效(但我确信它没有被正确关闭,仍然隐藏在某个地方)
$('.ui-dialog-titlebar-close').click()
将日期选择器ui的z索引更改为非常高的值对没有帮助
我的问题是:关闭对话框的正确方式是什么。我无法让$("#customDialog").dialog('close');
工作
如果有什么不清楚的地方,请询问。提前谢谢!
编辑:
在customDialog.load('editor.php')中添加了缺少的撇号;并编辑了问题以使更加清晰
好的,我找到了解决方案。我希望它能帮助到有需要的人。我使用的是Jquery1.11.1,Jquery-ui.js文件中似乎缺少一行代码。您需要将这一行添加到特定位置的jquery-ui.js中。即使你不刷新页面,它也会重新初始化你的日期选择器。
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick)
.find(document.body).append($.datepicker.dpDiv); // added line
$.datepicker.initialized = true;
}