HTML选择+限制可见选项的数量

时间:2011-12-16 05:27:54

标签: html select

enter image description here

我在图表中显示了加入日的选择。 它显示20个可见日,并且21到31不可见,但您可以向下滚动到它们。 由于页面的布局,选择上升而不是下降 - 看起来很奇怪。

考虑到这一点,我可以将可见选择选项的数量限制为10吗? 例如:显示01到10并且隐藏了11到31但可供选择。

可以这样做吗?

THX

3 个答案:

答案 0 :(得分:9)

实际上有一个小黑客可以实现选择SELECT TAG中显示的项目数量的奇怪缺乏。

1 -

假设我们想要一个SELECT,最多显示10个项目。 将以下js事件添加到SELECT TAG将实现此目标:

onfocus='this.size=10;' 
onblur='this.size=1;' 
onchange='this.size=1; this.blur();'

这会欺骗你的SELECT,给它带来理想的效果,把它变成一个大小的SELECT。

2 -

假设在某些时候我们想要显示的项目少于10个。

假设您从SQL查询中获取SELECT,您可以执行以下操作: 一旦知道查询有多少行,就可以在循环中包含下一句话

if($nRow<10){
  $nRowSelect=$nRow+1;
}
else{
  $nRowSelect=10;
}

因此,如果每个循环中的行数少于10行,则会分配要显示的所需行数。

onfocus='this.size=$nRowSelect;' 
onblur='this.size=1;' 
onchange='this.size=1; this.blur();'

3 -

Buggy行为取代元素。 由于这个hack用一个'size'替换了一个普通的SELECT,它需要占用内容所需的空间,而不是像下面的内容重叠的常见SELECT。 为了防止这种情况发生,如果要放置SELECT,让我们说一个TD TAG,你可以先用下面的风格把它放在DIV中:

position:absolute;
z-index:1;

这将使大小的SELECT与其下方的内容重叠,就好像它是一个常见的SELECT。

答案 1 :(得分:5)

将属性size添加到<select>

<select style=" width:100px;" size="2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>

答案 2 :(得分:3)

行为取决于浏览器,不能由作者控制。您可以在元素中使用size = 10属性,但它也会将菜单更改为列表框,这样即使菜单没有聚焦,也可以看到10个选项。要实现您描述的行为,您需要使用JavaScript和CSS构建自己的控件。

从可用性的角度来看,当选择一个月中的某一天时,文本输入框通常优于菜单。键入一个或两个数字比从30个左右的项目列表中选择更方便。