2

我使用 javascript 和 ajax 制作了自己的自动完成功能。一切都很好,但我有一个主要问题:定位。我目前正在像这样定位列表:

function ajaxautocomplete(elm)
{
    lista.innerHTML="";
        var x=getOffset(elm).left;
        var y=getOffset(elm).top;
        lista.style.position="absolute";
        lista.style.left=(x+5)+"px";
        lista.style.top=(y+25)+"px";
...
}

其中“lista”是我的自动完成列表,“elm”是当前的文本输入。现在,我有一个将文本输入作为单元格的表格,它们需要具有此自动完成功能。此定位有效,但如果表格足够大并且需要滚动,当我向下滚动页面并尝试自动完成底部的单元格时,定位不再起作用,并且我的列表出现在页面顶部的某个位置,如果我滚动得足够多,可能会超出屏幕。

任何想法,即使我滚动页面,我如何动态地为该列表分配一个位置?谢谢!

编辑:我忘了提,这是我的 getOffset(elm) 函数:

function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.offsetParent;
    }
    return { top: _y, left: _x };
}
4

1 回答 1

0

为什么不使用为此构建的 jquery 插件,例如这个插件或其他插件。否则您有很多工作要做而且不值得,尝试根据屏幕可见部分计算自动完成位置很大苹果..

于 2012-07-05T09:37:22.917 回答