Select2 Multiselect Dropdown 自定义搜索
Select2 Multiselect Dropdown custom search
我正在尝试修改 select2 多选下拉列表的搜索功能,而不是搜索包含搜索字符的元素,而是搜索以搜索字符开头的元素。我已经参考了 select2 文档,但他们已经声明 -
For multi-select boxes, there is no distinct search control
那么这是否意味着我们没有任何解决方法来修改该功能?
我的要求示例:
假设下拉列表包含 4 个元素,即
Australia,Argentina,India,United States
并且如果用户键入 'A' 进行搜索 return 所有四个值,因为所有值都包含 'A'。但我的要求是 return 只有以 'A' 开头的值,例如
Australia and Argentina
如何实现?
您可以使用 matcher
属性 要求它使用
修改搜索操作
select2.amd.require(['select2/compat/matcher'], ...)
请注意,此 属性 仅存在于完整版 select2
(select2.full.js
)
function search(term, text) {
if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
return true;
}
return false;
}
$.fn.select2.amd.require(['select2/compat/matcher'], function (f) {
$("select").select2({
matcher: f(search)
})
});
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet" />
<select multiple style="width:100%;">
<option>France</option>
<option>Family</option>
<option>Freezone</option>
</select>
Fiddle : https://jsfiddle.net/nx1eaLgz/
我正在尝试修改 select2 多选下拉列表的搜索功能,而不是搜索包含搜索字符的元素,而是搜索以搜索字符开头的元素。我已经参考了 select2 文档,但他们已经声明 -
For multi-select boxes, there is no distinct search control
那么这是否意味着我们没有任何解决方法来修改该功能?
我的要求示例: 假设下拉列表包含 4 个元素,即
Australia,Argentina,India,United States
并且如果用户键入 'A' 进行搜索 return 所有四个值,因为所有值都包含 'A'。但我的要求是 return 只有以 'A' 开头的值,例如
Australia and Argentina
如何实现?
您可以使用 matcher
属性 要求它使用
select2.amd.require(['select2/compat/matcher'], ...)
请注意,此 属性 仅存在于完整版 select2
(select2.full.js
)
function search(term, text) {
if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
return true;
}
return false;
}
$.fn.select2.amd.require(['select2/compat/matcher'], function (f) {
$("select").select2({
matcher: f(search)
})
});
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.full.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.css" rel="stylesheet" />
<select multiple style="width:100%;">
<option>France</option>
<option>Family</option>
<option>Freezone</option>
</select>
Fiddle : https://jsfiddle.net/nx1eaLgz/