J'utilise le plugin Chosen pour jQuery et j'aimerais que le comportement de recherche change un peu (sélection unique). La recherche ne produit que des occurrences où le début d'un mot de la chaîne de recherche correspond. Je voudrais élargir cela pour frapper aussi les mots après les barres obliques et les crochets.
Par exemple: Chaîne de recherche: "second" ne correspond pas aux éléments "first/second" ou "first (second)".
Je doute que cela soit modifiable en ajoutant simplement des options au constructeur, mais je suis disposé à changer le script source/hardcode.
Comme mentionné dans des réponses plus récentes, le plugin implémente maintenant une option pour changer le comportement de recherche:
search_contains: true
Le plugin ne fournit pas d’option pour changer le comportement de la méthode de recherche.
Si vous êtes prêt à changer le source du plugin lui-même, voici une façon de le faire.
La méthode qui effectue la recherche dans le plugin est Chosen.prototype.winnow_results
. Il utilise une expression régulière qui correspond au texte qui "commence par" le terme de recherche:
// "^": means "starts with"
// "searchText" is the text in the search input (it is just cleaned up don't be scared)
regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
Changez le en:
regex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
Le comportement de recherche peut être défini avec l'option search_contains
Ceci est par défaut false
Réglez-le sur true
et choisi trouvera également des correspondances à l'intérieur au lieu du début:
$('#my_dropdown').chosen({ search_contains: true });
Comme dans Choisi 1.0, ajoutez simplement l'option {search_contains: true}
$('.selector').chosen({search_contains: true});
S'amuser.
L'option search_contains
est disponible pour la recherche de sous-chaînes dans les options et peut être utilisée comme:
$(".chosen-select").chosen({
search_contains: true
});
dans choisi 1.0 je l'ai fait sur les lignes 301 et 302
escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
regexAnchor = "";