如何在IE 6上使用带有bgIframe的JQuery UI datepicker

时间:2020-03-06 14:59:06  来源:igfitidea点击:

我正在尝试在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 ...
});