Jquery ui datepicker在第二个对话框

时间:2015-12-22 14:08:59

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

我很感激你对这个的帮助。我现在一直在寻找一个小时的解决方案而且我无法让它工作。

我有两个文件" editor.php"和" functions.php"。

所以我得到了这个Jquery UI datepicker,我正在初始化并在编辑器中为保留文本字段提供一个唯一的ID .php

$(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键,当前日期将显示在该文本字段上。

我发现我的旧对话框没有正确关闭,我的日期选择器总是绑定到我的第一个Dialog中的日期文本字段(即使我再也看不到Dialog了)。

$("#customDialog").dialog('close');

这不起作用:&#34;在初始化之前无法在对话框上调用方法;试图调用方法&#39;关闭&#39;&#34;出现。所以我使用了以下有用的代码(但我确信它没有被正确关闭并且仍然隐藏在某个地方)

$('.ui-dialog-titlebar-close').click()

将datepicker-ui的z-index更改为非常高的值无效

我的问题是:关闭对话框的正确方法是什么。我无法让$("#customDialog").dialog('close');工作

请询问是否有任何不清楚的地方。提前谢谢!

修改
在customDialog.load中添加了缺少的撇号(&#39; editor.php&#39;);并编辑问题以使其更清晰

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方法。我希望它可以帮助有需要的人。 我正在使用Jquery 1.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;
    }