gpt4 book ai didi

jquery - 如何改进 jQuery "Tag-It"自动完成功能?

转载 作者:行者123 更新时间:2023-11-30 23:56:19 25 4
gpt4 key购买 nike

我喜欢 jQuery 的 Tag-It 插件,但如果我将其设置为自动完成,它并不总是按照我想要的方式工作。

这是一个例子。

我的自动填充数组由“Pink Lady Apple”、“Granny Smith Apple”、“Golden Delicious Apple”和“Apple”组成。

如果我输入“Apple”,它不会建议“粉红佳人”、“青苹果”或“金冠”。它只建议苹果。有没有办法可以改变它,以便它也扫描包含 Apple 但不以 Apple 开头的标签?

最佳答案

我遇到了同样的问题,所以我使用@Ravindra 的提示(+1 BTW)来看看我是否可以对插件进行逆向工程并找出 tagSource 函数预计返回的内容。

tagSource 函数返回一个 bool 值。如果 availableTags 数组中的标签显示在自动完成列表中,则返回 True。返回 False 表示不应显示该标签。

这里是默认的 tagSource 函数,它使用 indexOf 来确定目前输入的文本是否与 availableTags 数组中标签的开头相匹配:

原始,默认功能:

tagSource: function(search, showChoices) {
var filter = search.term.toLowerCase();
var choices = $.grep(this.options.availableTags, function(element) {
// Only match autocomplete options that begin with the search term.
// (Case insensitive.)
return (element.toLowerCase().indexOf(filter) === 0);
});
showChoices(this._subtractArray(choices, this.assignedTags()));
}

我复制了该函数并将其粘贴到 .tagit 函数中,因此它作为传递到 jQuery tagit 初始化函数的参数之一包含在内。然后我将其修改为使用 match 方法,该方法使用模式匹配来返回与模式匹配的字符串部分。如果匹配返回 null,则不在列表中显示它。如果它返回任何其他内容,请在列表中显示该标记:

作为参数传入的修改函数:

tagSource: function(search, showChoices) {
var filter = search.term.toLowerCase();
var choices = $.grep(this.options.availableTags, function(element) {
// Only match autocomplete options that begin with the search term.
// (Case insensitive.)
//return (element.toLowerCase().indexOf(filter) === 0);
console.info(element.toLowerCase().match(filter) + " : " + element + " : " + filter);
return (element.toLowerCase().match(filter) !== null);
});
showChoices(this._subtractArray(choices, this.assignedTags()));
}

示例:

$('#tagged').tagit({
onTagRemoved: function() {
alert("Removed tag");
},

availableTags: [ "one" , "two one" , "three" , "four" , "five" ],

// override function to modify autocomplete behavior
tagSource: function(search, showChoices) {
var filter = search.term.toLowerCase();
var choices = $.grep(this.options.availableTags, function(element) {
// Only match autocomplete options that begin with the search term.
// (Case insensitive.)
//return (element.toLowerCase().indexOf(filter) === 0);
console.info(element.toLowerCase().match(filter) + " : " + element + " : " + filter);
return (element.toLowerCase().match(filter) !== null);
});
showChoices(this._subtractArray(choices, this.assignedTags()));
}
});

关于jquery - 如何改进 jQuery "Tag-It"自动完成功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844085/

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