对于更重要的选择,Select2中的搜索框非常棒。然而,在一个例子中,我有4个简单的硬编码选项。在这种情况下,搜索框是多余的,而且看起来有点傻。有没有办法把它藏起来?我在网上查阅了文档,在构造函数中找不到任何选项。
当然,我可以只使用常规的HTML选择,但为了保持一致性,如果可能的话,我希望使用Select2。
对于更重要的选择,Select2中的搜索框非常棒。然而,在一个例子中,我有4个简单的硬编码选项。在这种情况下,搜索框是多余的,而且看起来有点傻。有没有办法把它藏起来?我在网上查阅了文档,在构造函数中找不到任何选项。
当然,我可以只使用常规的HTML选择,但为了保持一致性,如果可能的话,我希望使用Select2。
当前回答
$(document).ready(function() { $(".select2").select2(); }); <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script> <label>without search box</label> <select class="select2" data-width="100%" data-minimum-results-for-search="Infinity"> <option>one</option> <option>two</option> </select> <label>with search box</label> <select class="select2" data-width="100%"> <option>one</option> <option>two</option> </select>
其他回答
你可以试试这个
$('#select_id').select2({ minimumResultsForSearch: -1 });
它关闭搜索结果框,然后设置控件不可见
你可以在select2文档select2文档中检查
查看这个线程https://github.com/ivaynberg/select2/issues/489,您可以通过将minimumResultsForSearch设置为负值来隐藏搜索框。
$('select').select2({
minimumResultsForSearch: -1
});
如果你有多个属性在你的选择,这个肮脏的hack工作:
var multipleSelect = $('select[name="list_type"]');
multipleSelect.select2();
multipleSelect.parent().find('.select2-search--inline').remove();
multipleSelect.on('change', function(){
multipleSelect.parent().find('.select2-search--inline').remove();
});
查看文档https://select2.org/searching#limiting-display-of-the-search-box-to-large-result-sets
如果你想隐藏在初始打开,你正在通过ajax调用填充下拉列表,在你的select2声明的ajax块中添加以下内容:
beforeSend: function ()
{
$('.select2-search--dropdown').addClass('hidden');
}
然后在ajax请求成功后再次显示它(并聚焦):
success: function() {
$('.select2-search--dropdown').removeClass('select2-search--hide'); // show search bar then focus
$('.select2-search__field')[0].focus();
}
我喜欢根据选择中的选项数量动态地执行此操作;隐藏搜索选择与10或更少的结果,我做:
$fewResults = $("select>option:nth-child(11)").closest("select");
$fewResults.select2();
$('select').not($fewResults).select2({ minimumResultsForSearch : -1 });