Как использовать JQuery UI DatePicker с bgIframe на IE 6 - PullRequest
1 голос
/ 01 октября 2008

Я пытаюсь использовать средство выбора даты JQuery UI (последняя стабильная версия 1.5.2) на веб-сайте IE6. Но у меня обычные проблемы с полями со списком (выбирает) в IE6, где они всплывают над другими элементами управления. Я попытался добавить плагин bgIframe после объявления выбора даты безуспешно.

Я предполагаю, что .ui-datepicker-div, к которому я присоединяю bgIframe, не существует, пока не появится календарь.

Мне интересно, могу ли я поместить команду .bgIframe () непосредственно в файл datepicker .js, и если да, то где? (подобный контроль Кельвина Лака использует этот подход)

Текущий код

$ ( "DateItem"). Datepicker ({
showOn: "кнопка",
... и т.д ...
});
$ ( "Щ-DatePicker-дела.") BgIframe ();.

Ответы [ 4 ]

1 голос
/ 27 октября 2010

Я тоже очень переживал из-за проблемы. Решение становится следующим.

$(".DateItem").datepicker({
  showOn:"button",
  beforeShow:function(){
    $('#ui-datepicker-div').bgiframe();
  },
  ... etc ...
});
1 голос
/ 01 октября 2008

По умолчанию об этом нужно позаботиться.

iframe по умолчанию включается в IE6 в указателе даты. Стиль для этого называется ui-datepicker-cover, который обрабатывает прозрачность. Единственный раз, когда это не так, в старом коде themeroller, которого там не было.

0 голосов
/ 08 марта 2010

у меня было что-то подобное, и я использовал плагин 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();
}
});
0 голосов
/ 06 октября 2008

Я заметил комментарий Марка, что стиль 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

Steve

...