JQuery UI日期选择器';s选择月/年下拉列表不';如果日期选择器在JQuery对话框中,则无法在iPad中工作
我创建了一个jQuery UI日期选择器,如下所示: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,
$.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的放置逻辑。。。谢谢。我也有这个问题。