gpt4 book ai didi

typeahead.js - 带有 Typeahead/Bloodhound 的 Bootstrap Tokenfield 排除 token

转载 作者:行者123 更新时间:2023-12-04 08:08:17 27 4
gpt4 key购买 nike

我正在使用带有 typeahead/bloodhound 的 bootstrap-tokenfield。

我可以防止在 tokenfield 中两次使用相同的 token ,但相同的 token 仍然出现在 typeahead 响应中。如何排除 token 字段中已有的 token ?

var engine = new Bloodhound({
remote: {
url: API_URL + '?action=message_friends&q=%QUERY',
filter: function (response) {
return $.map(response.users, function (user) {
return {
value: user.user_id,
label: user.name
};
});
}
},
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
);

engine.initialize();

$('#to-tags').tokenfield({
typeahead: [
{
hint: false
},
{
name: 'users',
displayKey: 'label',
source: engine.ttAdapter()
}
]
}).on('tokenfield:createtoken', function (event) {
var existingTokens = $(this).tokenfield('getTokens');
$.each(existingTokens, function(index, token) {
if (token.value === event.attrs.value) {
event.preventDefault();
}
});
});

最佳答案

更新了过滤器功能以删除 token 字段中已有的用户:

var engine = new Bloodhound({
remote: {
url: API_URL + '?action=message_friends&q=%QUERY',
filter: function (response) {
var tagged_user = $('#to-tags').tokenfield('getTokens');
return $.map(response.users, function (user) {
var exists = false;
for (i=0; i < tagged_user.length; i++) {
if (user.user_id == tagged_user[i].value) {
var exists = true;
}
}
if (!exists) {
return {
value: user.user_id,
label: user.name
};
}
});
}
},
datumTokenizer: function (d) {
return Bloodhound.tokenizers.whitespace(d.value);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
});

engine.initialize();

$('#to-tags').tokenfield({
delimiter: false,
typeahead: [
{
hint: false
},
{
name: 'users',
displayKey: 'label',
source: engine.ttAdapter()
}
]
})
.on('tokenfield:createtoken', function (e) {
var existingTokens = $(this).tokenfield('getTokens');
if (existingTokens.length) {
$.each(existingTokens, function(index, token) {
if (token.value === e.attrs.value) {
e.preventDefault();
}
});
}
});

关于typeahead.js - 带有 Typeahead/Bloodhound 的 Bootstrap Tokenfield 排除 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23780501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com