jquery - 如果最初隐藏,Select2 不显示占位符
问题描述
当使用 Select2 在最初隐藏<select>
的多个属性时,占位符不显示。查看代码,我可以看到选择器.select2-container--default .select2-search--inline .select2-search__field
的宽度为 0px(猜测是因为它是隐藏的)。
$('[data-trigger="open"]').on('click', function(){
$('[data-target="open"]').toggleClass('hidden');
})
$('.select2').select2({
width: '100%'
});
.hidden {
display:none;
}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.min.js"></script>
<p><a href="#" data-trigger="open">Open Select2 and watch no placeholder...</a></p>
<div class="hidden" data-target="open">
<select name="select" id="select" class="select2" multiple data-placeholder="Select one or more...">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
</div>
强制使用width: 100% !important
CSS 规则只能部分解决问题:占位符显示,但输入字段随着每次项目选择而增长太多
$('[data-trigger="open"]').on('click', function(){
$('[data-target="open"]').toggleClass('hidden');
})
$('.select2').select2({
width: '200px' // limit size to make the "growing "problem appear
});
.hidden {
display:none;
}
.select2-container--default .select2-search--inline .select2-search__field {
width: 100% !important;
}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.min.js"></script>
<p><a href="#" data-trigger="open">Open Select2: placeholder ok, but field grows abnormally when inserting items...</a></p>
<div class="hidden" data-target="open">
<select name="select" id="select" class="select2" multiple data-placeholder="Select one or more...">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
</div>
请问,有什么帮助吗?
解决方案
将下面的 CSS 添加到您的页面
.select2-selection--multiple .select2-search__field{
width:100%!important;
}
推荐阅读
- c# - 如何使 2d 对象不断向一个方向移动,但是当给定水平输入改变方向但不改变速度时?
- tcp - 哪个IP地址有效或无效
- matlab - 如何使用 tiledlayout 生成未对齐的子图?
- angular - 在组件中使用 Angular Observable 订阅值
- powershell - PowerShell:从属性-lt X的对象集合中选择行
- javascript - 我想使用反应以 3*X 的网格方式显示图像
- javascript - 如何用数组替换 vuejs 中的插槽?
- http - Cookie 未保存在 Microsoft Edge 中
- r - 使用 devtools::install_local 构建小插图 - 在一个小插图中创建的全局变量在另一个小插图中可用
- java - 将单词添加到 StringBuffer