在回答您的第二个问题时,Chris Leishman 的 Tag-It 存储库分支包含一个新属性requireAutocomplete
,该属性仅允许将自动完成列表中的项目用作标签。
你可以在这里找到他的拉取请求:https ://github.com/aehlke/tag-it/pull/37
从以下网址下载此版本的 JS 文件:https ://github.com/chrisleishman/tag-it
并像使用普通属性一样使用它:
$(selector).tagit({
requireAutocomplete: true,
tagSource: [...]
});
至于您的第一个问题,我自己正在解决这个问题,所以当我找到解决方案时,我会更新我的答案。
我在第 271 行对我自己的本地 TagIt.js 进行了修改:
var tag = that.createTag(ui.item.value);
到
var tag = that.createTag(ui.item.label);
它解决了在从自动完成列表中选择一个选项后显示项目 ID 而不是标签的问题。
更新
以下是有关如何保存每个标签的 ID 的一些信息。
我做的第一件事是覆盖该createTag
方法以包含一个 labelName 参数(如果需要,您可以修改原始的,我只是更喜欢覆盖它)。
$.ui.tagit.prototype.createTag = function (labelName, value, additionalClass) {
// The origional code from createTag here
}
以与修剪当前值参数相同的方式修剪 labelName:
value = $.trim(value);
labelName = $.trim(labelName)
更改标签变量以使用新的标签名称:
var label = $(this.options.onTagClicked ?
'<a class="tagit-label"></a>' :
'<span class="tagit-label"></span>').text(labelName);
在原始源代码的自动完成部分中,我更改了对 createTag 的调用以包含新标签:
var tag = that.createTag(ui.item.label, ui.item.value);