2011-12-08 26 views
0

上面,我们正在使用这种自动完成插件:jQuery AutoComplete如果自动完成是在页面的底部,自动完成选项浮动文本区域

然而,当输入字段是在页面的底部是一个问题。自动完成列表(一旦你开始输入就会出现)将它的位置移动,以便代替放下文本框,它会漂浮在文本框上方。没关系,如果列表中有很多项目。但是,如果选项很少且高度不够,则输入框与自动填充框之间会有很大差距。

这样可以很清楚这里的形象:

Auto Complete Box Problem

是否有人知道如何修改代码,以便不会发生这种情况?或者让AutoComplete始终保持在输入框的底部,不管是什么?

我觉得这是做了jQuery的部分是:

// reposition the results div accordingly to the search field 

function repositionResultsDiv() 
{ 
    // get the field position 
    var sf_pos = acSearchField.offset(); 
    var sf_top = sf_pos.top; 
    var sf_left = sf_pos.left; 

    // get the field size 
    var sf_height = acSearchField.height(); 
// var sf_width = acSearchField.width(); 
    var sf_width = 285; 

    // apply the css styles - optimized for Firefox 
    acResultsDiv.css("position","absolute"); 
    acResultsDiv.css("zIndex", 1000); 
    acResultsDiv.css("left", sf_left - 2); 
    acResultsDiv.css("top", sf_top + sf_height + 5); 
    acResultsDiv.css("width", sf_width - 2); 
} 

显然,顶部偏移值应该更大(因此它被推进一步下跌),但它似乎并没有计算它正确。

回答

0

我能够找出问题所在。显然,在该特定页面上,页面加载后会生成一些内容,因此偏移值不会考虑该附加内容的高度。

我暂时做的解决方案是为该页面使用不同的ID,并在jQuery上添加一个条件以在检测到该ID时添加特定高度。我想我需要使用一些实时方法,或者可能在加载自动建语言脚本之前首先加载这段内容,但现在这个临时修补程序会执行。