【问题标题】:jquery select2 tag get value out of defaultjquery select2标签从默认值中获取值
【发布时间】:2015-09-25 09:07:43
【问题描述】:

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

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

我的 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 小提琴链接: http://jsfiddle.net/jb4b2cnu/

如何创建这个?

【问题讨论】:

    标签: javascript jquery jquery-select2


    【解决方案1】:

    如果我正确理解了您的问题,即添加新标签(如果它不存在)并通知database,那么您可以在创建新标签上设置一个变量通过选项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

    【讨论】:

    • 您好 Guruprasad Rao,感谢您的解决方案!当我测试您的代码在 select2 4.0 中运行良好时。但是我的开发使用的是 3.5 版本。我已经用小提琴更新了,你能看看吗?谢谢!
    • @Shiro.. 在搜索了所有网站后,我得出的结论是,没有选项可以将新元素添加到选项列表中,但不确定,或者通知标签是否为 新的,但有一个名为 select2.selecting 而不是 select2:select 的事件,但同样没有太多可供操作的选项..
    【解决方案2】:

    在我研究了一个旧版本的文档后,回复来自 (Select2 with createSearchChoice uses newly created choice for keyboard entry even given a match, bug or am I missing something?) 的帖子,并结合 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)" };
            } 
         },
    });
    

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多