我在这个Fiddle上有一个小例子。使用自动完成功能的简单Bootstrap令牌输入。
$(document).ready(function() {
$('#tokenfield').tokenfield({
autocomplete: {
source: ['red','blue','green','yellow','violet','brown','purple','black','white'],
delay: 100
},
showAutocompleteOnFocus: true
});
});
默认情况下,选择一个标记后,输入仍然会被聚焦,如果我将焦点放在输入字段中,自动完成只会再次自动弹出。
我希望能够在输入令牌后重新打开自动填充选项。
我正在考虑尝试使用tokenfield:createtoken
事件来输掉并再次获得输入焦点,但这不会给出自动完成下拉列表。
$('#tokenfield').on('tokenfield:createtoken', function (e) {
console.log('FOCUS IN AND OUT');
$('#tokenfield-tokenfield').blur();
$('#tokenfield-tokenfield').focus();
});
其他想法是尝试使用search
函数autocomplete-ui。
$('#tokenfield').on('tokenfield:createtoken', function (e) {
console.log('TRY AUTOCOMPLETE SEARCH');
$('#tokenfield-tokenfield').autocomplete('search', '');
});
也没有运气。 请帮忙!谢谢! JSFiddle Here
答案 0 :(得分:3)
您的代码无效,因为在自动完成窗口关闭之前会触发事件。
所以你需要 setTimeout 才能让它运转起来:
setTimeout(function() {
$('#tokenfield-tokenfield').blur();
$('#tokenfield-tokenfield').focus()
}, 0)
如您在示例中所示,在设置令牌后,自动完成窗口将立即关闭并再次打开。
答案 1 :(得分:0)
从aeryaguzov的回答中做了一些修改(我需要添加一个点击,以便在打开后第一次点击时选择) 它工作正常,但它仍然是一种解决方法。
欢迎更好的解决方案。
$('#tokenfield').on('tokenfield:createtoken', function (e) {
setTimeout(function() {
$('#tokenfield-tokenfield').blur();
$('#tokenfield-tokenfield').focus();
$('#tokenfield-tokenfield').click();
}, 0)
});