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

select2 tags support, how to prohibit option to be a tag?

我使用 select2 和 ajax search.How 来设置一些无法选择的选项。 例如,如下图

我在输入里写了一个'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
                    }
                })
            };
        }
    }

});

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

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

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

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

See JS Fiddle

试试这个

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

从您的 html

中删除“多个”
<select multiple></select>

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