最近碰到頁面日期選擇控件被頁頭擋住的問題,我們這個客戶的電腦是寬屏的,上下窄,屏幕又小,導致他點擊日期選擇控件時,無法選擇到月份。如圖:

分析造成這個問題的原因:
我們頁頭部分的z-index設置為11,定位部分(公文流轉>收文登記)和主標題部分(收文登記)的z-index都是設置為10,內容部分的z-index設置為9;發現JQuery UI 內置彈出的日期選擇框的z-index值是:$(input).zIndex() + 1,所以z-index等於10,導致日期選擇框被頁頭擋住。
分析后,整體公司UI框架的z-index體系不適合調整,因為還設計到其他模塊,比如右上角我們做了一個彈出菜單框,給用戶幫助、修改密碼、退出,如果嘗試把頁頭部分的z-index設置為10,但是接着就會發現彈出框被擋住。

所以,我們還是決定修改日期選擇框的z-index。
【方法1】:(修改JQuery UI.CSS樣式文件)整個系統中所有的時間選擇控件都可以統一調整,也是我們最終選取的方法
找到jquery-ui.css文件,找到 ui-datepicker,在其中加入 z-index:21 !important (如果需要數值可以更大,很多人設置為9999,不是太建議,說不定以后還有比日期選擇控件層級更高的);別忘了同時修改jquery-ui.min.css文件,最終使用的還是這個min.css文件。
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; z-index:21 !important /*解決日期選擇控件被擋住的問題*/ }
【方法2】:在使用datepicker控件頁面的JS中控制其樣式,但這種方法只適合於單一頁面,其他頁面不受影響,如果頁面多的大系統,這么做比較繁瑣(方法3也是一樣)
<p>日期:<input type="text" id="mydatepicker" style="position: relative;"></p>
$("#mydatepicker").datepicker({
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
dayNamesMin: ['日', '一', '二', '三', '四', '五', '六'],
dateFormat: 'yy-mm-dd',
beforeShow: function () {
setTimeout(
function () {
$('#ui-datepicker-div').css("z-index", 21);
}, 100
);
}
});
【方法3】
$('#mytimepicker').datetimepicker({
beforeShow:function(input) {
$(input).css({
"position": "relative",
"z-index": 999999
});
}
});
