Twitter Typeahead Bloodhound:在排序器选项中获取当前搜索字符串
Twitter Typeahead Bloodhound: Get current search string inside sorter option
我正在尝试根据搜索字符串在数据字段中的位置对建议进行排序。如果有人键入 '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;
}
有没有人知道如何获取当前使用的输入字段的搜索字符串?
谢谢,
伯恩德
P.S。对不起我的英语
好的,我定义了一个全局变量,当输入字段获得焦点时,我将元素保存到变量中。
var currentTypeAheadField = null;
jsTypeahead.on('focus', function() {
currentTypeAheadField = $(this);
})
所以在我的 Bloodhound 声明中我可以访问值:
sorter: function(a, b) {
var input_string = currentTypeAheadField.val();
...
}
没有找到更好的解决方案,但它有效。
我正在尝试根据搜索字符串在数据字段中的位置对建议进行排序。如果有人键入 '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;
}
有没有人知道如何获取当前使用的输入字段的搜索字符串?
谢谢,
伯恩德
P.S。对不起我的英语
好的,我定义了一个全局变量,当输入字段获得焦点时,我将元素保存到变量中。
var currentTypeAheadField = null;
jsTypeahead.on('focus', function() {
currentTypeAheadField = $(this);
})
所以在我的 Bloodhound 声明中我可以访问值:
sorter: function(a, b) {
var input_string = currentTypeAheadField.val();
...
}
没有找到更好的解决方案,但它有效。