【问题标题】:expanding drop down area above instead of below with javascript使用 javascript 在上方而不是下方扩展下拉区域
【发布时间】:2010-11-29 22:12:19
【问题描述】:

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

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

有人知道我需要设置什么才能使其向上而不是向下扩展吗?

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

【问题讨论】:

  • jquery 是一个选项吗?我目前正在使用一些不错的多选插件。
  • 老实说,我是一个新手程序员,可能已经做了大约 2 个月,而且我对 JavaScript 不太熟悉,所以我不知道你会如何使用jQuery

标签: javascript asp.net listbox multi-select


【解决方案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 (就像它的表兄弟 top、left 和 right 一样)设置元素在元素中心方向上相对于相应边缘的偏移量。 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 中)它没有从正确的位置开始,并且只有当侦听器按该顺序调用时才会到达那里。

【讨论】:

  • 这就是我最终要做的事情。每个项目都是一个列表框,onmouseover/onmouseout 触发 JS 中的调整大小功能。感谢您发布它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2018-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多