使用javascript扩展下方区域而不是下方区域

时间:2010-11-29 22:12:19

标签: javascript asp.net listbox multi-select

好的故事是我的用户需要一个多选下拉列表,这在ASP.NET中不存在,所以我要使用的简单解决方案是我使用带有多选的列表框并启动它们在大小1和onmouseover我改变大小说10,onmouseout将其设置为1。很简单,用户不知道区别。

现在,我的问题来自这样一个事实:由于我的网络应用程序上有任意数量的控件,我将这些列表框设置为比其他控件更高的z-index数字,这会产生一个问题:在我的列表框上更接近在页面底部,列表展开在下面而不是在上面,列表框的一部分位于页面底部,但由于onmouseout重置了列表框的大小,我无法向下滚动页面。

有人知道我需要设置什么才能让它扩展而不是缩小?

编辑此外,有些人可能会问“为什么不将列表框重新排列到页面中的更高位置”,这不是一个可行的选择,因为我已经超过了40在页面上控制它们并且它们是紧密地组合在一起的,我不是随意地将它们放在它们所在的位置。(即,一个部分的投资信息,另一个部分的帐户,另一个部分的适用性)

1 个答案:

答案 0 :(得分:1)

编辑:值得注意的是,下面的jQuery版本将更加紧凑,在我看来,更容易理解。

Glo,你目前的代码在这里会有所帮助,特别是因为你似乎很难改变我们给出的任何东西,或者实现我们可能描述的东西。无论如何,这在IE7,Firefox和Opera中都有用; Safari和Chrome使用它变得古怪:http://jsfiddle.net/bUFzq/35/(从http://www.plus2net.com/html_tutorial/html_frmddl.php修改)。

CSS只会使选择位置相对于其默认位置。元素只能相对于其他定位元素定位。 `位置:亲戚;'将元素留在原处,直到你移动它,不像绝对和固定。它还相对于其最近定位的祖先的边缘定位。 (IT行业有一个令人遗憾的惯例,即向下而不是向上增加Y;只是向上或向下增加。)

element.offsetHeight是元素的计算高度 - 它在屏幕上显示的大小。 element.style.bottom(就像它的堂兄弟的顶部,左侧和右侧)在元素中心的方向上设置元素与相应边缘的偏移量。 setAttribute相当不言自明;它就像你实际编辑HTML一样。 Mostelement.style属性(不在所有其他对象上)表示和修改类似命名的CSS属性。例如,element.style.backgroundColor设置background-color属性。

addEvent是一个从Dustin Diaz的Rock Solid addEvent()复制的函数,因为浏览器在如何做事件方面并不是很好。但是,如果我不在一个脚本区域内工作,我会把他的脚本放在一个单独的文件中,然后放在另一个文件中。我做了`var addEvent = init();'事情只是让你不必滚动他的来源,即使它是一个很好的代码的好例子。

mouseover& mouseout是实际的侦听器,使用apply显式调用1)因为我需要稍后的高度值和2)因为某些原因(至少在jsFiddle中)它不会从正确的位置开始,只有如果按顺序调用听众,它会到达那里。