首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tag-it onlyAvalaibleTags选项不起作用

Tag-it onlyAvalaibleTags选项不起作用
EN

Stack Overflow用户
提问于 2011-12-06 15:00:26
回答 3查看 1.3K关注 0票数 3

我使用的是https://github.com/aehlke/tag-it/downloads的tag-it插件。如何禁止添加新标签?

代码语言:javascript
复制
$(document).ready(function () {
                $("#Tags").tagit({
                    singleField: true,
                    singleFieldNode: $('#mySingleField'),
                     //  onlyAvailableTags : true,
                     allowNewTags: false,
                    tagSource: [@Html.Raw(ViewBag.AvailableTags)]
                });
            });

我尝试使用onlyAvailableTags : trueallowNewTags: false选项,但没有任何效果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-03 22:51:38

既然你说“但是没有效果”,我猜@Html.Raw(ViewBag.AvailableTags)会产生一个违反javascript语法的输出。标签需要用引号括起来,否则它们将被视为变量。

错误输出:

代码语言:javascript
复制
tagSource: [my-tag, another-tag]

在服务器端,我假设您有某种IEnumerable<string>

代码语言:javascript
复制
ViewBag.AvailableTags = new List<string>
{
    "my-tag",
    "another-tag",
};

然后,在.cshtml

代码语言:javascript
复制
tagSource: ["@string.Join("\", \"", ViewBag.AvailableTags)"]

这将产生正确的输出:

代码语言:javascript
复制
tagSource: ["my-tag", "another-tag"]

这将是我首先要尝试的。

票数 0
EN

Stack Overflow用户

发布于 2013-06-28 21:04:25

我通过注释发现了这一点:

代码语言:javascript
复制
 // Autocomplete will create its own tag from a selection and close automatically.
 if (!that.tagInput.data('autocomplete-open')) {
    that.createTag(that._cleanedInput());
 }

和:

代码语言:javascript
复制
// Create a tag when the element loses focus.
// If autocomplete is enabled and suggestion was clicked, don't add it.
if (!that.tagInput.data('autocomplete-open')) {
     that.createTag(that._cleanedInput());
}

它删除了此功能。也许不是最干净的方式,但它是有效的。

只需注释掉if(){ }循环即可。

票数 1
EN

Stack Overflow用户

发布于 2015-05-28 09:17:03

这是我为最新版本的tag-it所做的:

代码语言:javascript
复制
var tags_list = ['tag1', 'tag2, 'tag3];

$("input[name='subject-tags']").tagit({
    availableTags : tags_list,
    beforeTagAdded : function(event, ui) {
        if(tags_list.indexOf(ui.tagLabel) == -1){
            return false;
        }
    }
});

尝试通过实现以下方法使其更简洁

代码语言:javascript
复制
$("input[name='subject-tags']").tagit({
    availableTags : ['tag1', 'tag2, 'tag3],
    beforeTagAdded : function(event, ui) {
        if(this.availableTags.indexOf(ui.tagLabel) == -1){
            return false;
        }
    }
});

但是this.availableTags不返回数组(返回:undefined)。我是一个JS新手,所以我访问属性的方式一定有问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8396369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档