Twitter Typeahead Bloodhound:在分类器选项中获取当前搜索字符串
Posted
技术标签:
【中文标题】Twitter Typeahead Bloodhound:在分类器选项中获取当前搜索字符串【英文标题】:Twitter Typeahead Bloodhound: Get current search string inside sorter option 【发布时间】:2020-06-03 14:50:56 【问题描述】:我正在尝试根据数据字段中搜索字符串的位置对建议进行排序。如果有人输入 'ar',建议 A:'how are you' 应该排在 B:'come as you are' 之前,因为搜索字符串匹配 A 中的第二个单词和 B 中的第四个单词。这已经很有效了好吧。
要获取搜索字符串,我使用$('.searchfield').val()
。问题是,我在页面中有多个搜索字段,所以我必须知道当前使用的是哪个搜索字段。
这是我在 Bloodhound 声明中的代码:
sorter: function(a, b)
var input_string = $('.searchfield').val(); // <-- Here is my problem
input_string = input_string.split(/[ \-]+/);
input_string = input_string[0].toLowerCase();
var aArray = a.name.toLowerCase().split(/[ \-]+/);
var bArray = b.name.toLowerCase().split(/[ \-]+/);
var apos = 0, bpos = 0;
for (var i = 0; i < aArray.length; i++)
if (aArray[i].indexOf(input_string) !== -1)
apos = i;
break;
for (i = 0; i < bArray.length; i++)
if (bArray[i].indexOf(input_string) !== -1)
bpos = i;
break;
if (apos < bpos)
return -1;
else if (apos > bpos)
return 1;
else return 0;
有人知道如何获取当前使用的输入字段的搜索字符串吗?
谢谢,
伯纳德
附:对不起我的英语
【问题讨论】:
【参考方案1】:好的,我定义了一个全局变量,当输入字段获得焦点时,我将元素保存到变量中。
var currentTypeAheadField = null;
jsTypeahead.on('focus', function()
currentTypeAheadField = $(this);
)
所以在我的 Bloodhound 声明中,我可以访问该值:
sorter: function(a, b)
var input_string = currentTypeAheadField.val();
...
没有找到更好的解决方案,但是可以。
【讨论】:
以上是关于Twitter Typeahead Bloodhound:在分类器选项中获取当前搜索字符串的主要内容,如果未能解决你的问题,请参考以下文章
Twitter Typeahead.js - 选择时删除数据
即使查询返回结果,Twitter-typeahead 也不显示任何结果
html Twitter Bootstrap Typeahead自动完成示例