显然这不起作用:
select[multiple]{
height: 100%;
}
它使select具有100%的页面高度...
auto
也不起作用,我仍然得到垂直滚动条。
还有其他想法吗?
答案 0 :(得分:111)
我猜您可以使用 size
属性。它适用于所有最近的浏览器。
<select name="courses" multiple="multiple" size="30" style="height: 100%;">
答案 1 :(得分:60)
您可以使用size
标记中的select
属性执行此操作。
假设您有8个选项,那么您可以这样做:
<select name='courses' multiple="multiple" size='8'>
答案 2 :(得分:26)
旧的,但这将完成你所需要的,而不需要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;
答案 3 :(得分:12)
对于jQuery,你可以尝试这个。我总是做以下事情并且有效。
$(function () {
$("#multiSelect").attr("size",$("#multiSelect option").length);
});
答案 4 :(得分:9)
您只能在Javascript / JQuery中执行此操作,您可以使用以下JQuery执行此操作(假设您已选择了多选的ID):
$(function () {
$("#multiSelect").css("height", parseInt($("#multiSelect option").length) * 20);
});
答案 5 :(得分:5)
我知道这个问题已经过时了,但主题是如何关闭的我不会给予帮助。
属性&#34; size&#34;将解决您的问题。
示例:
<select name="courses" multiple="multiple" size="30">
答案 6 :(得分:5)
<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>
答案 7 :(得分:3)
你可以用简单的javascript ...
来做到这一点<select multiple="multiple" size="return this.length();">
...或限制高度,直到记录数...
<select multiple="multiple" size="return this.length() > 10 ? this.length(): 10;">
答案 8 :(得分:1)
朋友: 如果从数据库中检索de数据: 你可以打电话给这个 $ registers = * _num_rows(Result_query) 然后
<select size=<?=$registers + 1; ?>">
答案 9 :(得分:1)
使用 size 属性是最实用的解决方案,但是只有两个或三个选项应用于选择元素时会有一些怪癖。
简单的JavaScript可用于将 size 属性自动设置为正确的值,例如见this fiddle。
$(function() {
$("#autoheight").attr("size", parseInt($("#autoheight option").length));
});
如上所述,当只有两个或三个选项时,此解决方案无法解决问题。
答案 10 :(得分:0)
我最近有这个要求,并使用此问题的其他帖子来创建此脚本:
$("select[multiple]").each(function() {
$(this).css("height","100%")
.attr("size",this.length);
})
答案 11 :(得分:0)
要将所有多个选择的大小(高度)调整为选项数量,请使用jQuery:
$('select[multiple = multiple]').each(function() {
$(this).attr('size', $(this).find('option').length)
})
答案 12 :(得分:0)
要删除滚动条,请添加以下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>
答案 13 :(得分:0)
这是Laravel示例:
{!! Form::select('subdomains[]', $subdomains, null, [
'id' => 'subdomains',
'multiple' => true,
'size' => $subdomains->count(),
'class' => 'col-12 col-md-4 form-control '.($errors->has('subdomains') ? 'is-invalid' : ''),
]) !!}
答案 14 :(得分:0)
您可以先计数选项标签,然后设置size属性的计数。 例如,在PHP中,您可以计算数组,然后对数组使用foreach循环。
<?php $count = count($array); ?>
<select size="<?php echo $count; ?>" style="height:100%;">
<?php foreach ($array as $item){ ?>
<option value="valueItem">Name Item</option>
<?php } ?>
</select>
答案 15 :(得分:-1)
呈现选择框的方式由浏览器本身决定。因此,每个浏览器都会显示另一个高度的选项列表框的高度。 你不能影响那个。 您可以改变的唯一方法是从头开始进行自己的选择。