Как изменить значение Z-индекса jQuery UI Datepicker?
Я вынужден использовать более старую версию jQuery ui, которая составляет 1.8.10. Datepicker в этой версии имел ошибку внутри настройки Z-индекса, которая иногда заставляла его появляться под другими элементами управления. Я просто хочу настроить z-индекс dp так, чтобы он появлялся поверх других элементов управления. Я попытался изменить Z-индекс .файл JS, но это не удалось. Я читал, что вы должны установить это значение в событии aftershow, потому что значение будет перезаписано, если его ранее(не уверен, если это правда). Вот пример того, как im создает экземпляр dp...я также прилагается элемента управления datepicker, чтобы в datepicker.
$(function () {
$("input[id$='txtPreviousCutOff']").datetimepicker({
timeFormat: "hh:mm tt",
stepMinute: 5
});
$("#dpimage6").click(function () {
$("input[id$='txtPreviousCutOff']").datepicker("show")
});
});
7 ответов
.ui-datepicker-div { z-index: 999999; }
или с js:
$(function () {
$("input[id$='txtPreviousCutOff']").datetimepicker({
timeFormat: "hh:mm tt",
stepMinute: 5
});
$("#dpimage6").click(function () {
$("input[id$='txtPreviousCutOff']").datepicker("show")
});
$('.ui-datepicker-div').css('zIndex', 999999);
});
вам нужно будет применить стили к ui-widget-content
класс
.ui-widget-content
{
z-index: 100;
}
убедитесь, что класс добавлен с лучше специфичности так что это переопределяет UI styles
#datepicker.ui-widget-content {}
этот код работает для меня. Предположим, у меня есть дата-комплектовщик див название "Уи-элемент управления datepicker-div В" и класса "применить" "уй-отмечать". Поэтому я даю css as, его работу для меня.
#ui-datepicker-div ,.ui-datepicker { z-index: 99999 !important; }
похоже, datepicker копирует любое значение z-индекса, которое имеет исходный элемент ввода. Я могу придумать 2 способа решить эту проблему:
Не-JS
Просто добавьте z-index:1051;
к атрибуту style вашего входного элемента. Это основано на наблюдении, что Bootstrap .modal
класс использует Z-индекс 1050.
динамическое решение с использованием JS
При объявлении вашего datepicker добавьте обработчик beforeShow, который извлекает z-индекс .modal
и установить datepicker Z-индекс на 1 выше этого:
datepicker({beforeShow: function(inputElem, inst) {
var zi = Number($(inputElem).closest('.modal').css('z-index'));
$(inputElem).css('z-index',zi+1);
}});
используйте это, чтобы установить свой datepicker z-index: (не тестируется, но должен работать)
$("input[id$='txtPreviousCutOff']").datetimepicker({
timeFormat: "hh:mm tt",
stepMinute: 5,
beforeShow: function() {$('#ui-datepicker-div').css('z-index',++$.ui.dialog.maxZ); }
});
просто измените CSS:
как и до этого:
/* Original */
.ui-datepicker { width: 17em; padding: .2em .2em 0 }
/* Modify */
.ui-datepicker { width: 17em; padding: .2em .2em 0; z-index:9999 !important; }
не забудьте добавить !Important
.
это переопределяет любой встроенный стиль, который добавляется javascript
.
надеюсь, это сработает:)
Удачи В Кодировании
Я вызвал эту функцию, когда пользователь щелкает в текстовом поле, используемом для управления datepicker
function textboxWhenClicked(){
$("#textboxid").datepicker();
$("#ui-datepicker-div").css("z-index", 999999);
}
работал великий
- M