web-dev-qa-db-fra.com

Changer le comportement de recherche dans le plugin jQuery

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.

Choisi: https://github.com/harvesthq/chosen

39
David W.

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

Documentation options


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');

DÉMO

79
Didier Ghys

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 });
44

Comme dans Choisi 1.0, ajoutez simplement l'option {search_contains: true}

$('.selector').chosen({search_contains: true});

S'amuser.

7
Dirk Nguyen

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
});
0
Lovepreet Singh

dans choisi 1.0 je l'ai fait sur les lignes 301 et 302

escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
regexAnchor = "";
0
Dave Driesmans