Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 EasyAutocomplete的自定义匹配公式_Javascript_Jquery_Autocomplete_Easyautocomplete - Fatal编程技术网

Javascript EasyAutocomplete的自定义匹配公式

Javascript EasyAutocomplete的自定义匹配公式,javascript,jquery,autocomplete,easyautocomplete,Javascript,Jquery,Autocomplete,Easyautocomplete,我正在使用一个名为JS的插件来处理我网站上的高级自动建议。它支持远程数据集(JSON、XML、纯文本),并使用ajax方法调用来搜索、排序和匹配响应短语 我正在尝试编写一个自定义匹配公式,它允许我这样做,但希望能得到一些帮助 现在,当你输入时,它会搜索你正在输入的单词/短语的任何部分我想让它只检查单个或多个单词短语中每个单词的开头。 假设我的远程数据集包含: “市场街” “街市街巷” “南街路” 如果我的搜索是“Street”,根据插件的默认功能,所有3个结果都会显示出来,因为“Street”一

我正在使用一个名为JS的插件来处理我网站上的高级自动建议。它支持远程数据集(JSON、XML、纯文本),并使用ajax方法调用来搜索、排序和匹配响应短语

我正在尝试编写一个自定义匹配公式,它允许我这样做,但希望能得到一些帮助

现在,当你输入时,它会搜索你正在输入的单词/短语的任何部分我想让它只检查单个或多个单词短语中每个单词的开头。

假设我的远程数据集包含:

“市场街”
“街市街巷”
“南街路”

如果我的搜索是“Street”,根据插件的默认功能,所有3个结果都会显示出来,因为“Street”一词是这3个结果的一部分。(演示如下)

我在插件的Github repo()上发现了一个与我类似的问题,但这个问题只用于匹配每个结果项的开头(而不是每个结果项中的每个单词)。因此,如果我的搜索是“Street”,则只会显示第三个结果。(演示如下)

我的问题是搜索结果项中任何单词开头的匹配公式。因此,如果我的搜索是“Street”,将显示第一个和第三个结果。


以下是默认情况下插件的工作方式(我已经注释掉了自定义匹配公式):

jQuery(文档).ready(函数($){
变量选项={
数据:[
{“名称”:“市场街”,“家长”:“狗管理”,“链接”:https://marketstreet.com"},
{“姓名”:“街市街道”、“家长”:“狗管理”、“链接”:https://marketlane.com"},
{“名称”:“街道南路”,“家长”:“猫管理”,“链接”:https://streetsouthroad.com"}
],
getValue:“名称”,
列表:{
匹配:{
启用:对,
/*
方法:函数(元素、短语){
if(元素索引of(短语)==0){
返回true;
}否则{
返回false;
}
}
*/
},
onSelectItemEvent:函数(){
var selectedItemValue=$(“#公司”).getSelectedItemData().parent;
var selectedItemLink=$(“#公司”).getSelectedItemData().link;
$(“#公司#u结果”).html(“”).trigger(“更改”);
},
},    
模板:{
类型:“说明”,
字段:{
描述:“家长”
}
}    
};
美元(“#公司”)。easyAutocomplete(期权);
});


搜索“街道”

此功能:

  • 使元素小写(无大写)
  • 把它分成几个字
  • 过滤掉任何不以给定输入开头的单词
如果筛选数组中有任何元素,则必须匹配。否则,它不会。这就是
.length
检查的目的

method: function(element, phrase) {
  return !!element.toLowerCase().split(" ").filter((word) => word.indexOf(phrase.toLowerCase()) === 0).length;
}