2017-10-05 60 views
0

我正在使用select2 JQuery插件。下拉列表中的第一個選項標記爲「所有組織」。當用戶搜索選項時,我不想在搜索結果中包含首個「所有組織」選項。我可以在我的自定義匹配器中訪問原始的select2匹配器嗎?

有沒有簡單的方法來做到這一點?

看來,策略將是使用自定義匹配器,如果看到該選項,則返回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

在這裏,我們走;)

var defaultMatcher = $.fn.select2.defaults.defaults.matcher; 
 
function customMatcher(params, data) { 
 
    if (params.term && data.id == "ALL") 
 
    \t return null; 
 
    return defaultMatcher(params, data); 
 
} 
 
$("#s").select2({ 
 
\t 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>

+0

謝謝!我想我真的希望有人會說「實際上你不需要客戶匹配器,只需在設置它時打開這個標誌。」 – pushkin

+0

我認爲最好的解決方案是[使用佔位符](https://stackoverflow.com/questions/21413241/how-to-use-placeholder-as-default-value-in-select2-framework),但你要求默認匹配器 – bigless

+0

是的,我看到了,但我不認爲我想要一個佔位符。我希望它是一個選項,而不是可搜索的選項。 – pushkin

相關問題