如何在IE 6上使用带有bgIframe的JQuery UI datepicker
我正在尝试在IE6网站上使用JQuery UI datepicker(最新稳定版本1.5.2)。但是我在IE6上的组合框(选择)漂浮在其他控件上方时遇到了通常的问题。我尝试在声明日期选择器后添加bgIframe插件,但没有运气。
我的猜测是我要添加bgIframe的.ui-datepicker-div在显示日历之前不存在。
我想知道是否可以将.bgIframe()命令直接放入datepicker .js文件中,如果可以,在哪里? (kelvin Luck的类似控件使用此方法)
当前代码
$("。DateItem")。datepicker({
showOn:"按钮",
... 等等 ...
});
$("。ui-datepicker-div")。bgIframe();
解决方案
默认情况下,这应该为我们解决。
默认情况下,日期选择器中的IE6中会包含iframe。它的样式称为ui-datepicker-cover,用于处理透明度。唯一不是这样的情况是在旧的themeroller代码中没有样式。
我已经注意到Marc的评论,即ui-datepicker-cover样式应该可以解决此问题。在我的情况下,日历的右边缘和下边缘仍将显示通过它们的下拉列表。
看起来iFrame的大小最初是由以下代码行设置的
if ($.browser.msie && parseInt($.browser.version, 10) < 7) // fix IE < 7 select problems $('iframe.ui-datepicker-cover').css({ width: inst.dpDiv.width() + 4, height: inst.dpDiv.height() + 4 });
在postProcess函数中。
然后,每当行更改日期时,都会重置此大小
inst.dpDiv.empty().append(this._generateHTML(inst)). find('iframe.ui-datepicker-cover'). css({ width: dims.width, height: dims.height });
我的简单解决方案是删除这两套代码,并修复.css文件中封面样式的大小
//if ($.browser.msie && parseInt($.browser.version, 10) < 7) // fix IE < 7 select problems // $('iframe.ui-datepicker-cover').css({ width: inst.dpDiv.width() + 4, height: inst.dpDiv.height() + 4 }); inst.dpDiv.empty().append(this._generateHTML(inst))//. <=== note the // before the . //find('iframe.ui-datepicker-cover'). //css({ width: dims.width, height: dims.height });
在CSS文件中,将.ui-datepicker-cover的宽度设置为220px,将高度设置为200px
史蒂夫
我有类似的东西,并且要使用bgIframe插件,只需将bgiframe();
函数放在onBeforeShow()datepicker的方法中
核实
$('#date').DatePicker({ format:'Y/m/d', date: $('#date').val(), current: $('#date').val(), position: 'r', onBeforeShow: function(){ $('#date').DatePickerSetDate($('#date').val(), true); $('.datepickerContainer').bgiframe(); }, onChange: function(formated, dates){ $('#date').val(formated); $('#date').DatePickerHide(); } });
由于这个问题,我也非常担心。
解决方案如下。
$(".DateItem").datepicker({ showOn:"button", beforeShow:function(){ $('#ui-datepicker-div').bgiframe(); }, ... etc ... });