JQuery UI日期选择器';s选择月/年下拉列表不';如果日期选择器在JQuery对话框中,则无法在iPad中工作

JQuery UI日期选择器';s选择月/年下拉列表不';如果日期选择器在JQuery对话框中,则无法在iPad中工作,jquery,ipad,jquery-ui,jquery-ui-datepicker,jquery-dialog,Jquery,Ipad,Jquery Ui,Jquery Ui Datepicker,Jquery Dialog,我创建了一个jQuery UI日期选择器,如下所示: $.datepicker.setDefaults({ changeMonth: true, changeYear: true, defaultDate: null, dateFormat: dateTimeFormat, showOn: 'both', buttonImageOnly: true,

我创建了一个jQuery UI日期选择器,如下所示:

 $.datepicker.setDefaults({
            changeMonth: true,
            changeYear: true,
            defaultDate: null,
            dateFormat: dateTimeFormat,
            showOn: 'both',
            buttonImageOnly: true,
            buttonImage: urlPath + 'Content/styles/images/calendar.gif',
            buttonText: 'Calendar'
        });

    $('input.datetime', controlContext).datepicker({
        onSelect: function (dateText, inst) {
            $(inst, controlContext).val(dateText);
            var dateSelected = $(inst, controlContext).datepicker("getDate");
        },
        beforeShow: function (input, inst) {
            $('.hasDatepicker').blur();
        }
    });
它适用于所有主流浏览器。只有当它不在jQuery对话框上时,它才能在Ipad上正常工作。在jQuery对话框上,如果我使用datepicker只选择某个日期,它也可以正常工作。只有用于选择某个月或日期的下拉列表根本不起作用。我可以看到下拉选项,甚至可以单击任何选项,但在选择任何选项后,它并没有隐藏选项列表,它只是停留在那里

经过大量调试,我发现在选择任何月份或年份时应该触发的
onchange
事件没有触发

如果日期选择器不在jQuery对话框中,即使选择月/年也可以在iPad上重复


不确定出了什么问题。

这对我来说很好:

报告了一个bug:(它被标记为已修复,但讨论表明它未正确修复)


我在Firefox/Mac上的jQuery UI日期选择器的引导模式上遇到了问题。

这似乎与在弹出窗口之外创建的UI日期选择器div有关。我在使用twitter引导模式时也遇到了同样的问题。我可以通过以下方法绕过它:

$('#ui-datepicker-div').ready(function() {
  var popup = document.getElementById('**ID OF YOUR POPUP**');
  var datePicker = document.getElementById('ui-datepicker-div');
  popup.appendChild(datePicker);
});

希望有帮助

对我来说,解决方案只是增加dataPicker owner元素的z索引,在您的例子中,增加z索引
$('input.datetime',controlContext)
我在使用twitter引导模式时遇到了这个问题;就像上面回答的JadedCore一样。我相当肯定他的假设,即在弹出窗口之外创建的日期选择器(在我的例子中是模态)是问题的原因

我已经在几个模态中使用了这个日期选择器,并且想要一些东西来“修复”所有位置。我接受了JadedCore的答案,并对其进行了修改,使其更适用于多种情态动词;当模态关闭时,我还将日期选择器移回主体。如果同时显示多个模态,我可以预见这个示例会出现问题,所以要小心

$(function() {
    $('.modal').on('show.bs.modal', function (e) {
        var datePicker = document.getElementById('ui-datepicker-div');
        if (datePicker) {
            e.delegateTarget.appendChild(datePicker);
        }
    });

    $('.modal').on('hide.bs.modal', function (e) {      
        var datePicker = document.getElementById('ui-datepicker-div');
        if (datePicker) {
            $("body").append(datePicker);
        }
    });
});

您能否发布更多相关代码,例如下拉列表和onchange?你能把它们放在JSFIDLE中吗?你使用的是最新的jQueryUI吗?对话是模态的吗?谢谢,这就解决了问题。现在,日期选择器没有正确的节奏,但至少它在工作!事实上,这里也一样;这就解决了主要问题。关于如何修复解决方案引起的位置偏移有什么线索吗?@mabian69你能给我一张你看到的屏幕截图和一个代码示例吗?这里:月份和年份下拉列表在Firefox中不起作用。一个解决方案是移动datepicker div并使其成为弹出子对象,但这是一个麻烦的解决方案,因为我有一个JQuery移动应用程序,它实际上是一个单页应用程序,并且可以在弹出窗口内部或外部使用date picker控件。此外,在弹出窗口内部移动datepicker会搞乱datepicker的放置逻辑。。。谢谢。我也有这个问题。