欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

my97日期控件弹出位置显示异常

程序员文章站 2023-12-31 18:06:58
使用my97日期选择控件的时候,如果整个页面是有滚动条的,根据触发显示日期的控件的父控件的position不同会显示不同的情况 1、position不为fixed则滑动滚动条,显示的日期层不会出现异常位移,如下图 滚动条不动,正常显示 滚动条没去,正常显示 2、position为fixed则滑动滚动 ......

使用my97日期选择控件的时候,如果整个页面是有滚动条的,根据触发显示日期的控件的父控件的position不同会显示不同的情况

1、position不为fixed则滑动滚动条,显示的日期层不会出现异常位移,如下图

    滚动条不动,正常显示

my97日期控件弹出位置显示异常

    滚动条没去,正常显示

my97日期控件弹出位置显示异常

2、position为fixed则滑动滚动税票,显示的日期层会根据滚动条的移动而移动,如下图

    滚动条不动,正常显示

my97日期控件弹出位置显示异常

    滚动条滑动,异常位移

my97日期控件弹出位置显示异常

对于第二种情况解决方法如下:

写一个方法 如下:

function showdate() {
        $('iframe[hidefocus]').parent().hide();//用于强制重新计算坐标值
        new wdatepicker();
        var scrolltop = (window.pageyoffset || document.documentelement.scrolltop || document.body.scrolltop);//滚动条的偏移值
        var oldtop = $('iframe[hidefocus]').parent().css('top').replace('px', '');//日期控件最终计算的top值
        var newtop = oldtop - scrolltop//日期控件的top值减去滚动条的偏移值就是当前日期控件的位置
        var icount = 0;
        //下面用setinterval 主要是为了第一次加载的时候 top 设置会先于wdatepicker完成
        var inthandle = setinterval(function () {
            var top = $('iframe[hidefocus]').parent().css('top').replace('px', '');
            icount++;
            if (icount < 10) {
                $('iframe[hidefocus]').parent().css({
                    'position': 'fixed',
                    'top': newtop
                });
            }
            else {
                clearinterval(inthandle);
            }
        }, 100);
    }

触发的控件的onclick事件直接调用 此方法,完成页面html和调用代码如下

<h2>index</h2>

<div style="height: 1000px; background-color: yellow">
</div>
<div style="position: absolute; top: 50%; left:50%; background-color: blue;">
    <input type="text" class="form-control" onclick="showdate();"/>
</div>
<script src="~/scripts/plugin/my97datepicker/wdatepicker.js"></script>
<script type="text/javascript">
    function showdate() {
        $('iframe[hidefocus]').parent().hide();//用于强制重新计算坐标值
        new wdatepicker();
        var scrolltop = (window.pageyoffset || document.documentelement.scrolltop || document.body.scrolltop);//滚动条的偏移值
        var oldtop = $('iframe[hidefocus]').parent().css('top').replace('px', '');//日期控件最终计算的top值
        var newtop = oldtop - scrolltop//日期控件的top值减去滚动条的偏移值就是当前日期控件的位置
        var icount = 0;
        //下面用setinterval 主要是为了第一次加载的时候 top 设置会先于wdatepicker完成
        var inthandle = setinterval(function () {
            var top = $('iframe[hidefocus]').parent().css('top').replace('px', '');
            icount++;
            if (icount < 10) {
                $('iframe[hidefocus]').parent().css({
                    'position': 'fixed',
                    'top': newtop
                });
            }
            else {
                clearinterval(inthandle);
            }
        }, 100);
    }
</script>

最终显示结果如下,日期显示框没有位移

my97日期控件弹出位置显示异常

上一篇:

下一篇: