На самом деле есть небольшой взлом, который может достичь этого странного отсутствия возможности выбрать количество элементов, отображаемых в 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 элементов.
Предполагая, что вы получаете SELECT из SQL-запроса, вы можете сделать что-то вроде следующего:
Как только вы узнаете, сколько строк содержит ваш запрос, вы можете включить следующее предложение в цикл
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 -
Глючит поведение вытесняющих элементов.
Так как этот хак заменяет общий SELECT на «размерный», он занимает место, в котором необходимо сместить контент, а не как обычный SELECT, который перекрывает контент под ним.
Чтобы этого не произошло, если SELECT будет помещен, скажем, в TD TAG, вы можете сначала поместить его в DIV в следующем стиле:
position:absolute;
z-index:1;
Это позволит размерному SELECT перекрывать содержимое под ним, как если бы это был обычный SELECT.