对于更重要的选择,Select2中的搜索框非常棒。然而,在一个例子中,我有4个简单的硬编码选项。在这种情况下,搜索框是多余的,而且看起来有点傻。有没有办法把它藏起来?我在网上查阅了文档,在构造函数中找不到任何选项。

当然,我可以只使用常规的HTML选择,但为了保持一致性,如果可能的话,我希望使用Select2。


当前回答

版本4.0.3

尽量不要将用户界面需求与JavaScript代码混合在一起。

你可以在标记中用属性隐藏搜索框:

data-minimum-results-for-search = "无限"

标记

<select class="select2" data-minimum-results-for-search="Infinity"></select>

例子

$(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>

其他回答

//readonly on all select2 input
$(".select2-search input").prop("readonly", true);

如果你想隐藏在初始打开,你正在通过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();
  }

这是最好的解决方案,干净又好用:

$("#select2Id").select2 () ;
$("#select2Id").select2 ('container').find ('.select2-search').addClass ('hidden') ;

然后,创建一个类.hidden {display;none;}

你可以为minimumResultsForSearch选项设置无穷大或-1

解决方案1

裁判:https://select2.org/searching # limiting-display-of-the-search-box-to-large-result-sets

$('select').select2({
    minimumResultsForSearch: -1
});

解决方案2

裁判:https://select2.org/searching # hiding-the-search-box

$('select').select2({
   minimumResultsForSearch: Infinity
});

版本4.0.3

尽量不要将用户界面需求与JavaScript代码混合在一起。

你可以在标记中用属性隐藏搜索框:

data-minimum-results-for-search = "无限"

标记

<select class="select2" data-minimum-results-for-search="Infinity"></select>

例子

$(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>