改变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 = "";