我可以从自定义匹配器中访问原始select2匹配器吗?

时间:2017-10-05 16:07:26

标签: javascript jquery jquery-select2

我正在使用select2 JQuery插件。下拉列表中的第一个选项标记为“所有组织”。当用户搜索选项时,我不想在搜索结果中包含第一个“所有组织”选项。

有没有一种简单的方法可以做到这一点?

似乎策略是使用自定义匹配器,如果我看到该选项则返回null。但是,我需要对匹配器的其余部分进行编码,这基本上与默认行为相同。我可以以某种方式从我的自定义匹配器中调用原始匹配器吗?

$("select").select2({
    matcher: custMatcher
});

function custMatcher(params, data) {
    if (params.term === "All Organizations") {
        return null;
    }

    // else do regular searching
    // would like to call the original matcher here.
 }

jsfiddle

1 个答案:

答案 0 :(得分:3)

我们走了;)



var defaultMatcher = $.fn.select2.defaults.defaults.matcher;
function customMatcher(params, data) {
  if (params.term && data.id == "ALL") 
  	return null;
  return defaultMatcher(params, data);
}
$("#s").select2({
	matcher: customMatcher,
});

<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/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>

<select id="s">
<option value="ALL">All Organizations</option>
<option value="1">Org 1</option>
</select>
&#13;
&#13;
&#13;