jquery select2 标签获取默认值

jquery select2 tag get value out of default

如何从默认值中获取值,这意味着我只想获取用户自定义插入的新值。

例如,现在我的默认值为 "red"、"green"、"blue"。 如果用户输入 "yellow"、"black"。我只想通知 新标签 ,这样我就可以存储在数据库中,以便为下一个用户预填充下一轮。

我的select2版本是3.4.2

HTML :

<input id="tags" class="text-input form-control"  type="text" name="tags" size="24"  placeholder="tags" >

JS:(在文档中)

$(document).ready(function () {
    $("#tags").select2({
    tags: ["red", "green", "blue"],
    maximumInputLength: 10
    });
});

我使用的是旧版本 JQuery 和旧版本 select2 Fiddle Link: http://jsfiddle.net/jb4b2cnu/

如何创建这个?

如果我正确理解了你的问题,即 添加新标签(如果它不存在)并通知 database 那么你可以在 [=] 上设置一个变量21=]通过选项 createTag 创建新标签 ,然后利用 select2.select 事件发送或通知您的 db 关于新添加的 tag。例如:

$("#tags").select2({
    tags: ["red", "green", "blue"],
    maximumInputLength: 10,
    createTag: function (tag) {
        return {
            id: tag.term,
            text: tag.term,
            isNew : true
        };
    }
}).on("select2:select", function(e) {
    if(e.params.data.isNew){
        alert('make db call here');            
        $(this).find('[value="'+e.params.data.id+'"]').replaceWith('<option selected value="'+e.params.data.id+'">'+e.params.data.text+'</option>');
    }
});

样本DEMO

我研究了一个旧版本文档后,从(Select2 with createSearchChoice uses newly created choice for keyboard entry even given a match, bug or am I missing something?)回答post并结合Guruprasad Rao的想法。

这是我可以在旧版本中存档的内容。

var result = ["red", "green", "blue"];
var isNew = false;
var varNew = [];
i = 0;
$("#tags").select2({
    tags: result,
    maximumInputLength: 10,
    createSearchChoice:function(term, data) {  
       if(result.some(function(r) { return r.text == term })) {
            return { id: term, text: term };
        }
        else {
            isNew = true;
            varNew[i++] = term;
            return { id: term, text: term + " (new)" };
        } 
     },
});