Jquery ui日期选择器在第二个对话框中无法正常工作


Jquery ui datepicker not working properly in second Dialog

我非常感谢您的帮助。我已经找了好几个小时的修复方法了,但我就是找不到。

我有两个文件"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;
    }