javascript自动完成自制定位问题

时间:2012-07-05 09:20:24

标签: javascript ajax autocomplete position

我使用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 };
}

1 个答案:

答案 0 :(得分:0)

为什么不使用为此构建的jquery插件,如this one或其他一些插件。否则你有很多工作要做,这是不值得的,尝试计算自动完成位置屏幕可见部分是大苹果..