【问题标题】:Jquery ui datepicker not working properly in second DialogJquery ui datepicker 在第二个对话框中无法正常工作
【发布时间】:2016-03-28 19:52:55
【问题描述】:

感谢您对此提供的帮助。我已经找了几个小时的修复方法,但我无法让它工作。

我有两个文件“editor.php”和“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中我得到了持有对话框的div

<div id="customDialog" title="Editor"></div>

我的对话框中有一个我在 editor.php 中构建的表单。对话框和我的表单数据正确显示。现在我在我的一个文本字段中有一个日期选择器,该表单在该对话框中可以正常工作。

现在我在那个对话框中有一个链接,它打开另一个对话框并关闭旧的对话框,它也可以正常工作。我现在的问题是,日期选择器将不再显示,但我确定它在那里,因为我可以单击它并按 Enter,当前日期将显示在该文本字段上。

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

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

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

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

将 datepicker-ui 的 z-index 更改为非常高的值并没有帮助

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

如果有不清楚的地方,请询问。提前谢谢!

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

【问题讨论】:

  • 旁注,您在customDialog.load('editor.php); 中有错字(缺少关闭'
  • 谢谢,只是复制粘贴我的代码时出现的一个错字。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2021-06-16
    • 2019-01-27
    相关资源
    最近更新 更多