select2标签支持,如何禁止选项成为标签?

时间:2016-11-02 11:45:45

标签: javascript jquery ajax select2

我使用select2和ajax搜索。如何设置一些选项无法选择。 例如,如下图所示 enter image description here

我写了一个' w'在输入中,但下拉列表中的第一行不是来自ajax搜索的数据。如何设置它无法选择或不能显示它?

html代码

<select id="normalSymptom" name="normalSymptom" class="form-control select2-multiple" multiple > </select>

javascript代码

$('#normalSymptom').select2({
    tags: true,
    multiple: true,
    tokenSeparators: [','],
    minimumInputLength: 1,
    minimumResultsForSearch: 10,
    ajax: {
        url: "/DiseaseSearch/symptomSearch",
        dataType: "json",
        type: "GET",
        data: function (params) {
            var queryParameters = {
                word: params.term
            }
            return queryParameters;
        },
        processResults: function (data) {
            return {
                results: $.map(data, function (item) {
                    return {
                        text: item.name,
                        id: item.id
                    }
                })
            };
        }
    }

});

4 个答案:

答案 0 :(得分:1)

默认情况下,您可以创建新标签。

要禁用标记创建,请提供createTag选项。此选项是一个指示给定标记是否允许的函数。在您的情况下,您希望允许创建 no 标记,因此返回null,例如,

$('#normalSymptom').select2({
  tags: true,
  multiple: true,
  createTag: function (params) {
    return null;
  },
  // etc.
});

See JS Fiddle

答案 1 :(得分:0)

我暂时没有使用select2,但我相信这是该插件的预期行为。 这就是说,你应该能够找到具有&#39; w&#39;的元素的id / class。并将其设置为display: none;,这在过去对我有用。

答案 2 :(得分:0)

试试这个

$('select').select2({tags:false});

答案 3 :(得分:0)

从你的 html 中删除“multiple”

<select multiple></select>

实际上,每当我们在 select 中写入多个时,它就会成为选择多个选项的标签。当您删除它时,它变得像单选选项。我希望它有帮助! :)