Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
228 views
in Technique[技术] by (71.8m points)

Changing search behavior in jquery plugin Chosen

I'm using the Chosen plugin for jQuery and would like the search behavior to change a bit (single select). Searching only results in hits where the beginning of a word in the seach string matches. I would like to extend this to also hit words after slash and brackets.

For example: search string: "second" does not match items "first/second" or "first (second)".

I doubt this is changeble by simply adding options to constructor, but I am willing to change/hardcode source script.

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

question from:https://stackoverflow.com/questions/9274362/changing-search-behavior-in-jquery-plugin-chosen

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

As mentionned in some more recent answers, the plugin now implemements an option to change the search behavior:

search_contains: true

Options documentation


The plugin does not provide an option to change the search method behavior.

If you're willing to change the plugin source itself, here's a way to do it.

The method that makes the search in the plugin is Chosen.prototype.winnow_results. It uses a regular expression that matches text that "starts with" the search term:

// "^": 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');

Change it to:

regex = new RegExp(searchText.replace(/[-[]{}()*+?.,\^$|#s]/g, "\$&"), 'i');

DEMO


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...