【问题标题】:How to disable creating new tags with select2 v4.0?如何禁用使用 select2 v4.0 创建新标签?
【发布时间】:2015-08-08 21:10:32
【问题描述】:

我一直在尝试新的Select2 v4.0,它有很多改进。我主要对tags 功能感兴趣。我希望能够通过 ajax 搜索标签,并且 only 能够从显示的结果中选择一个标签,而不能创建新标签。该功能类似于 StackOverflow - 如果您没有必要的声誉,则无法创建新标签,但您仍然可以使用现有标签标记问题。

这是一个jsfiddle,我的代码取自示例。在示例中,您可以创建我想要限制的新标签。用户应该只能从通过 ajax 从 GitHub 检索到的列表中选择标签。

有人知道如何禁用此功能吗?

【问题讨论】:

    标签: jquery jquery-select2-4


    【解决方案1】:

    标签:假,

    $("#DropDownId").select2({
           minimumInputLength: 3,
           maximumSelectionLength: 10,
           tags: [],
           **tags:false,**
        ajax: {
            url: "@Url.Action("ActionName", "ControllerName")",
            type: "get",
            dataType: 'json',
            delay: 250,
            data: function (params) {
                return {
                    Title: params.term // search term
                };
            },
            processResults: function (response) {
                return {
                    results: $.map(response, function (item) {
                        return {
                            text: item.Title,
                            id: item.NibafInstituteId
                        }
                    })
                };
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

      我不确定是否应该在此处添加以下内容,但是当我在搜索相同的问题时,谷歌向我指出了这个问题。但是我使用的是旧版本 3.x,这就是如何为 3.x 版本实现相同的场景。

      在 3.5 版上测试

      createSearchChoice: function(params) {
          return undefined;
      }
      

      【讨论】:

        【解决方案3】:

        我也一直在努力解决这个问题,但几个小时后就开始工作了。

        我已经指定了一些标记分隔符(因为我的访问者可以在网站的不同位置创建标签)。事实证明,即使 tags 配置设置为 false,分隔符仍然适用。

        解决方案:tags: false 并且不要为 tokenSeperators 添加值。保持multiple: true

        【讨论】:

          【解决方案4】:

          这应该可行 - 在 select2 的初始化中,尝试从 createTag 函数返回 undefined,如下所示:

          createTag: function(params) {
                          return undefined;
                     }
          

          【讨论】:

          • 抱歉回复晚了。这对我来说似乎工作正常。谢谢你的分享! :)
          • @tftd 你能用这个解决方案更新小提琴吗,因为我尝试更新你发送的小提琴,但它不起作用。
          • 显然这在 pre-4.0 (3.5.3) Select2 中被称为 createSearchChoice()。他们在迁移到 4.0 时更改了许多函数名称。
          • 我想知道......当他们自己的文档指向 tags: false 时,为什么要这样做? select2.org/tagging
          【解决方案5】:

          您可以通过在初始化 Select2 时删除 tags: true 来禁用标签。或者,在初始化 Select2 时设置 tags: false。标签仅启用if the tags option is truthy,即当您传入true时。

          【讨论】:

          • 我正在寻找以下visual effect。如果我设置tags: false(或忽略它),它将返回到一个选择框。就我而言,我需要它更像tag-it 而不是选择框。
          • 我不完全确定你的意思,不幸的是没有 jsfiddle/jsbin 来查看(你现在拥有什么与你想要什么),很难回答你的问题之外的任何问题标题。我不确定您所说的“返回选择框”是什么意思。您是否正在寻找 multiple 选项?
          • 我可能解释得不够清楚 - 很抱歉。我的意思是,如果我删除tags: false,它将变成一个选择框,就像Loading remote data 示例一样。我已经更新了我的问题。希望这更有意义?
          • 我想他是说他希望用户必须选择一个现有的标签值,而不能在那里输入自己的自定义新标签值。我自己也追求同样的功能。例如 Stackoverflow 不会让分数低的用户创建新标签
          猜你喜欢
          • 1970-01-01
          • 2015-04-23
          • 2016-10-16
          • 1970-01-01
          • 2013-11-23
          • 2016-04-14
          • 2016-05-15
          相关资源
          最近更新 更多