【问题标题】:Tag-it onlyAvalaibleTags option doesn't workTag-it onlyAvalaibleTags 选项不起作用
【发布时间】:2011-12-06 07:00:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: jquery asp.net-mvc-3 tag-it


    【解决方案1】:

    我发现通过注释掉:

     // Autocomplete will create its own tag from a selection and close automatically.
     if (!that.tagInput.data('autocomplete-open')) {
        that.createTag(that._cleanedInput());
     }
    

    还有:

    // 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(){ } 循环即可。

    【讨论】:

      【解决方案2】:

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

      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;
              }
          }
      });
      

      试图通过实施使其更清洁

      $("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 菜鸟,所以我访问该属性的方式一定有问题。

      【讨论】:

        【解决方案3】:

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

        输出错误:

        tagSource: [my-tag, another-tag]
        

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

        ViewBag.AvailableTags = new List<string>
        {
            "my-tag",
            "another-tag",
        };
        

        那么,在你的.cshtml

        tagSource: ["@string.Join("\", \"", ViewBag.AvailableTags)"]
        

        这将产生正确的输出:

        tagSource: ["my-tag", "another-tag"]
        

        这将是我首先尝试的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多