启用select2多选搜索框

Joh*_*ink 13 javascript jquery jquery-select2 select2

我需要能够使用select2向我的多选字段添加搜索框.

无论出于何种原因,当搜索框在单选字段中按预期显示时,多选字段上的相同select2()调用不会添加搜索框.

var data = []; // Programatically-generated options array with > 5 options
var placeholder = "select";
$(".mySelect").select2({
    data: data,
    placeholder: placeholder,
    allowClear: false,
    minimumResultsForSearch: 5});
Run Code Online (Sandbox Code Playgroud)

select2不支持多选的搜索框吗?有没有人有一个良好的功能相似的替代品?

Jay*_*zzi 11

答案是select2输入元素成为没有后端数据的多个选择的搜索框

如果您开始输入,您的结果将开始过滤选项

如果你将它设置为加载远程ajax数据,它实际上会保留一个搜索框,但对于没有数据源的多个选择,输入是搜索栏,这是相当直观的

https://select2.github.io/examples.html

  • 事实证明,我们的 CSS 隐藏了多选框中的搜索字段。对我来说,为单选设置单独的搜索栏和为多选设置组合选择/搜索栏并不是最直观的,但至少它是有效的。 (2认同)

Hol*_*Jan 10

您可以使用dropdownAdapter选项通过 SearchBox设置原始Dropdown 。此代码对我有用(select2 v.4.0.13):

//Set Dropdown with SearchBox via dropdownAdapter option (/sf/ask/2505989811/)
var Utils = $.fn.select2.amd.require('select2/utils');
var Dropdown = $.fn.select2.amd.require('select2/dropdown');
var DropdownSearch = $.fn.select2.amd.require('select2/dropdown/search');
var CloseOnSelect = $.fn.select2.amd.require('select2/dropdown/closeOnSelect');
var AttachBody = $.fn.select2.amd.require('select2/dropdown/attachBody');

var dropdownAdapter = Utils.Decorate(Utils.Decorate(Utils.Decorate(Dropdown, DropdownSearch), CloseOnSelect), AttachBody);

$('#select2').select2({
    ...
    dropdownAdapter: dropdownAdapter,
    minimumResultsForSearch: 0,
    ...
}).on('select2:opening select2:closing', function (event) {
    //Disable original search (https://select2.org/searching#multi-select)
    var searchfield = $(this).parent().find('.select2-search__field');
    searchfield.prop('disabled', true);
});
Run Code Online (Sandbox Code Playgroud)


Sad*_*dee 9

select2 v4.0.3

<select class="smartsearch_keyword" name="keyword[]" id="keyword" style="width:100%;"></select>

$(".smartsearch_keyword").select2({
    multiple: true,
    ...
});
Run Code Online (Sandbox Code Playgroud)

另外:设置多个默认选择