改变jquery插件中的search行为select

我正在使用jQuery的select插件,并希望search行为改变一点(单选)。 仅searchsearchstring中的单词的开头匹配的匹配结果。 我想把这个扩展到斜杠和括号之后。

例如:searchstring:“ ”与项目“ first / second ”或“ first(second) ”不匹配。

我怀疑这是可改变的,只需添加选项给构造函数,但我愿意更改/硬编码源脚本。

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

正如在最近的一些答案中提到的,插件现在实现了一个选项来改变search行为:

search_contains: true 

选项文件


该插件不提供更改search方法行为的选项。

如果你愿意改变插件的来源,这是一个办法。

在插件中进行search的方法是Chosen.prototype.winnow_results 。 它使用正则expression式来匹配“开头”search词的文本:

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

将其更改为:

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

DEMO

search行为可以使用选项search_contains进行设置

这是默认的false

将其设置为true ,并且select也会在里面find匹配,而不仅仅是开始:

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

正如在select1.0中,只需添加选项{search_contains:true}

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

玩的开心。

在select的1.0我做了301和302行

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