更改所选jquery插件中的搜索行为

更改所选jquery插件中的搜索行为,jquery,jquery-plugins,Jquery,Jquery Plugins,我正在使用所选的jQuery插件,希望搜索行为有所改变(单选)。搜索只会得到搜索字符串中单词开头匹配的命中结果。我想把它扩展到斜杠和括号后的hit单词 例如: 搜索字符串:“second”与项目“first/second”或“first(second)”不匹配 我怀疑通过简单地向构造函数添加选项就可以改变这一点,但我愿意更改/hardcode源代码脚本 选择:正如最近的一些回答中提到的,该插件现在实现了一个更改搜索行为的选项: search_contains: true 该插件不提供更改搜

我正在使用所选的jQuery插件,希望搜索行为有所改变(单选)。搜索只会得到搜索字符串中单词开头匹配的命中结果。我想把它扩展到斜杠和括号后的hit单词

例如: 搜索字符串:“second”与项目“first/second”或“first(second)”不匹配

我怀疑通过简单地向构造函数添加选项就可以改变这一点,但我愿意更改/hardcode源代码脚本


选择:

正如最近的一些回答中提到的,该插件现在实现了一个更改搜索行为的选项:

search_contains: true


该插件不提供更改搜索方法行为的选项

如果您愿意更改插件源代码本身,这里有一个方法

在插件中进行搜索的方法是
选择的.prototype.winnow\u results
。它使用与搜索词“以”开头的文本匹配的正则表达式:

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

可以使用
search\u contains

默认情况下这是
false

将其设置为
true
,选中该选项也会在其中查找匹配项,而不仅仅是开头:

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

在选定的1.0中,我在第301和302行执行了此操作

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

在Selected 1.0中,只需添加选项{search_contains:true}

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

玩得开心。

有一个选项
search\u包含可用于在选项中搜索子字符串的
,可以用作:

$(".chosen-select").chosen({
    search_contains: true
});

非常好!这也会导致searchTerm=“cond”的点击率,我实际上并没有在寻找它,但在这种情况下它是完全可以接受的。现在它是最新的,不需要修改插件。似乎今天选择的版本在
单词的开头搜索:因此,如果我在输入中键入t,并且绑定到所选对象的
选择
有一个类似“某些文本”的选项,它将在下拉列表中列出…是否有方法禁止此行为,并仅从选项文本的开头进行真正的搜索?是否出于性能原因而默认禁用此功能?如果是,性能变化有多大。