2017-10-05 3 views
0

J'utilise le plugin JQuery select2. La première option dans la liste déroulante est intitulée "Toutes les organisations". Lorsque les utilisateurs recherchent une option, je ne souhaite pas inclure cette première option "Toutes les organisations" dans les résultats de la recherche.Puis-je accéder au sélecteur select2 d'origine à partir de mon navigateur personnel?

Existe-t-il un moyen facile de le faire?

Il semble que la stratégie serait d'utiliser un matcher personnalisé et de retourner null si je vois cette option. Cependant, alors je devrais coder le reste du matcher, ce qui ferait essentiellement la même chose que le comportement par défaut. Puis-je d'une manière ou d'une autre appeler le programme d'origine à partir de mon matcher personnalisé?

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

Répondre

1

Ici, nous allons;)

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

Merci! Je suppose que j'espérais vraiment que quelqu'un dirait "en fait, vous n'avez pas besoin d'un client, juste allumer ce drapeau lorsque vous le configurez." – pushkin

+0

Je pense que la meilleure solution est [using placeholder] (https://stackoverflow.com/questions/21413241/how-to-use-placeholder-as-default-value-in-select2-framework), mais vous avez demandé par défaut matcher – bigless

+0

Oui, j'ai vu ça, mais je ne pense pas que je veuille un espace réservé. Je veux que ce soit une option, mais pas celle qui est consultable. – pushkin