Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Typeahead.js突出显示多个单词_Javascript_Search_Autocomplete_Typeahead.js - Fatal编程技术网

Javascript 使用Typeahead.js突出显示多个单词

Javascript 使用Typeahead.js突出显示多个单词,javascript,search,autocomplete,typeahead.js,Javascript,Search,Autocomplete,Typeahead.js,我使用的是自动完成,就像在中一样 当我搜索“rh”时,结果是“rhode岛”(匹配字符高亮显示) 当我搜索“rh is”时,结果是“Rhode Island”(没有任何突出显示)。我怎样才能让它工作?预期结果:“Rhode是land” 另外,如果这需要修改,那么这对我来说是可以的。我认为如果您将\S模式添加到中使用的正则表达式中。escapeRegExChars()帮助程序(请参阅),它将解决您的问题 我不确定,因为我没有在笔记本电脑上回答,也无法进行测试,但您可以现在就让我试试。typeahe

我使用的是自动完成,就像在中一样

当我搜索“rh”时,结果是“rhode岛”(匹配字符高亮显示)

当我搜索“rh is”时,结果是“Rhode Island”(没有任何突出显示)。我怎样才能让它工作?预期结果:“Rhodeland”


另外,如果这需要修改,那么这对我来说是可以的。

我认为如果您将
\S
模式添加到
中使用的正则表达式中。escapeRegExChars()
帮助程序(请参阅),它将解决您的问题


我不确定,因为我没有在笔记本电脑上回答,也无法进行测试,但您可以现在就让我试试。

typeahead的默认集成突出显示组件不够智能,无法满足您的要求

我给你举了一个例子,一个文本高亮显示搜索词/关键字或自定义正则表达式。请查看该网站以了解有关API的更多信息

演示

$(函数(){
//构建建议引擎
var州=[“阿拉巴马州”、“阿拉斯加州”、“亚利桑那州”、“阿肯色州”、“加利福尼亚州”,
“科罗拉多州”、“康涅狄格州”、“特拉华州”、“佛罗里达州”、“乔治亚州”、“夏威夷州”,
爱达荷州、伊利诺斯州、印第安纳州、爱荷华州、堪萨斯州、肯塔基州、路易斯安那州、,
缅因州、马里兰州、马萨诸塞州、密歇根州、明尼苏达州、,
“密西西比州”、“密苏里州”、“蒙大拿州”、“内布拉斯加州”、“内华达州”、“新罕布什尔州”,
“新泽西州”、“新墨西哥州”、“纽约州”、“北卡罗来纳州”、“北达科他州”,
“俄亥俄州”、“俄克拉何马州”、“俄勒冈州”、“宾夕法尼亚州”、“罗德岛州”,
“南卡罗来纳州”、“南达科他州”、“田纳西州”、“德克萨斯州”、“犹他州”、“佛蒙特州”,
“弗吉尼亚州”、“华盛顿州”、“西弗吉尼亚州”、“威斯康星州”、“怀俄明州”、“随身携带”
];
var状态=新猎犬({
datumTokenizer:Bloodhound.tokenizers.whitespace,
queryTokenizer:猎犬,标记,空白,
//`states`是在“基础”中定义的状态名称数组
当地:各州
});
//使用mark.js初始化typeahead
var$context=$(“#猎犬”);
$context.find(“.typeahead”).typeahead({
提示:没错,
//禁用集成的typeahead组件
推荐理由:错,
最小长度:1
}, {
名称:“州”,
资料来源:各国
}).on(“typeahead:render”,函数(){
//使用mark.js突出显示匹配项
var searchTerm=$(this.val();
$context.find(“.tt菜单”).mark(searchTerm);
});
});
输入{
宽度:250px;
填充:3倍;
}
标记{
背景:黄色;
颜色:黑色;
}


问题[此处][1][1]可能重复:谢谢。但是这个链接是针对bootstrap v2.3之前的typeahead组件的,在typeahead.js中可能没有相应的函数可以覆盖!这正是我想要的。还有一个问题:当我输入“a”时,它会突出显示阿拉巴马州的所有a。是否可以只突出显示第一个a?谢谢!目前,无法将高光限制为特定数量的匹配。但幸运的是,其他用户(或者你呢?)在几个小时前请求了相同的功能,请参阅。因此,如果您希望实现此选项,请您自己参与。但是,您可以始终检查
searchTerm
是否与“a”相对应,并且在这种情况下不初始化mark.js。我没有提交功能请求,所以其他人提交了。该行为不能通过正则表达式(markRegExp)实现吗?@compie请参加GitHub上的讨论,为您的用例找到解决方案。