我有一个文本框,我将 jQuery UI 的自动完成功能附加到,我正在使用 CSS 通过此处的示例为其提供最大高度。我的问题是这样做会导致bgiframe解决的 z-index 问题再次出现,但方式不同。最初的自动完成菜单在它下面的所有控件之上,但是当我开始滚动时,自动完成菜单落在它们后面。
有什么建议么?
编辑:
这纯粹是一个 IE6 错误。
如您所见,向下滚动后,自动完成功能落后于其他控件。
我可以通过在以下行(来自 jquery.bgiframe.js)中用scrollHeight替换offsetHeight来解决这个问题:
height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+
此更改解决了带有垂直滚动条的自动完成字段的错误。我无法在其他类型的对话框中发现任何回归(但我没有进行广泛的测试)。
You need to reverse the z-index order of the form elements (or their containers) using javascript. I.e., "Social Worker" has the lowest, "DX Code" the highest z-index.
您可以将 offsetHeight 更改为 scrollHeight,就像 Siggen 所说的那样,但是当自动完成仅返回 1 个结果时,我遇到了问题。1 结果被压缩到一个只有 2 px 高的窗口中。不过我找到了解决办法。当你有一个 data.length<2 时,你应该使用 offsetHeight,而不是 scrollHeight。
您必须修改 autocomplete.js。
Locate this code:
if($.fn.bgiframe)list.bgiframe();
并做到这一点:
if($.fn.bgiframe){
if(data.length<2)
list.bgiframe({height:'expression(this.parentNode.offsetHeight+\'px\')'});
else
list.bgiframe();
}
请记住,此代码应与 Siggen 的修复程序结合使用。
我已经将这两个参数的组合用于高度,如下所示:
'height:'+(s.height=='auto'?'expression(Math.max(this.parentNode.offsetHeight,this.parentNode.scrollHeight)+\'px\')':prop(s.height))+';'
查看 max 函数。现在没有滚动条很好(更短的列表和更长的列表)
现在自动完成组件在 IE6 中看起来很完美。