По-видимому, это не работает:
select[multiple]{
height: 100%;
}
он делает выбор 100% высоты страницы...
auto
тоже не работает, я все равно получаю вертикальную полосу прокрутки.
Любые другие идеи?
По-видимому, это не работает:
select[multiple]{
height: 100%;
}
он делает выбор 100% высоты страницы...
auto
тоже не работает, я все равно получаю вертикальную полосу прокрутки.
Любые другие идеи?
Я думаю, вы можете использовать атрибут size
. Он работает во всех последних браузерах.
<select name="courses" multiple="multiple" size="30" style="height: 100%;">
Вы можете сделать это, используя атрибут size
в теге select
.
Предположим, что у вас есть 8 вариантов, тогда вы сделаете это так:
<select name='courses' multiple="multiple" size='8'>
Старый, но это сделает то, что вам нужно, без необходимости jquery. Скрытое переполнение избавляет от полосы прокрутки, а javascript делает правильный размер.
<select multiple='multiple' id='select' style='overflow:hidden'>
<option value='foo'>foo</option>
<option value='bar'>bar</option>
<option value='abc'>abc</option>
<option value='def'>def</option>
<option value='xyz'>xyz</option>
</select>
И всего лишь небольшое количество javascript
var select = document.getElementById('select');
select.size = select.length;
Для jQuery вы можете попробовать это. Я всегда делаю следующее, и это работает.
$(function () {
$("#multiSelect").attr("size",$("#multiSelect option").length);
});
Вы можете сделать это только в Javascript/JQuery, вы можете сделать это со следующим JQuery (при условии, что вы выбрали свой идентификатор multiselect):
$(function () {
$("#multiSelect").css("height", parseInt($("#multiSelect option").length) * 20);
});
Я знаю, что вопрос старый, но как тема не закрыта. Я дам свою помощь.
Атрибут "размер" решит вашу проблему.
Пример:
<select name="courses" multiple="multiple" size="30">
<select id="list">
<optgroup label="Group">
<option value="1">1</option>
</optgroup>
</select>
<script>
const l = document.getElementById("list")
l.setAttribute("size", l.childElementCount + l.length)
</script>
Вы можете сделать это с помощью простого javascript...
<select multiple="multiple" size="return this.length();">
... или предельная высота до номера записей...
<select multiple="multiple" size="return this.length() > 10 ? this.length(): 10;">
друзья: если вы извлекаете данные из БД: вы можете позвонить $ registers = * _num_rows (Result_query) затем
<select size=<?=$registers + 1; ?>">
Использование атрибута size является наиболее практичным решением, однако есть причуды, когда он применяется для выбора элементов только с двумя или тремя параметрами.
Простой JavaScript можно использовать для автоматического задания атрибута размера на правильное значение, например. см. эту скрипту.
$(function() {
$("#autoheight").attr("size", parseInt($("#autoheight option").length));
});
Как уже упоминалось выше, это решение не решает проблему, когда есть только два или три варианта.
У меня было это требование недавно, и я использовал другие сообщения из этого вопроса, чтобы создать этот script:
$("select[multiple]").each(function() {
$(this).css("height","100%")
.attr("size",this.length);
})
Чтобы настроить размер (высоту) всех нескольких выборок на количество параметров, используйте jQuery:
$('select[multiple = multiple]').each(function() {
$(this).attr('size', $(this).find('option').length)
})
Чтобы удалить полосу прокрутки, добавьте следующий CSS:
select[multiple] {
overflow-y: auto;
}
Вот фрагмент:
select[multiple] {
overflow-y: auto;
}
<select>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select multiple size="3">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Способ отображения окна выбора определяется самим браузером. Таким образом, каждый браузер покажет вам высоту окна списка опций на другой высоте. Вы не можете повлиять на это. Единственный способ изменить это - сделать собственный выбор с нуля.