javascript – Select2:使用代码动态添加新标签

前端之家收集整理的这篇文章主要介绍了javascript – Select2:使用代码动态添加新标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用select2进行标记,我设置了这样,用户也可以添加标签.我正在处理的问题是验证用户输入并将清理后的标签添加到选择中.

更具体地说,当用户标签中输入空格时,我使用formatNoMatches来显示用于清理标签的js链接,然后以编程方式添加标签.此代码似乎运行没有错误,但是当调用sanitize时,将清除所有输入选择.

我可能出错的任何线索?

var data=[{id:0,tag:'enhancement'},{id:1,tag:'bug'},{id:2,tag:'duplicate'},{id:3,tag:'invalid'},{id:4,tag:'wontfix'}];
function format(item) { return item.tag; }

function sanitize(a){

    $("#select").select2('val',[{
        id: -1,tag: a
      }]);

      console.log(a);
};

$("#select").select2({
  tags: true,// tokenSeparators: [","," "],createSearchChoice: function(term,data) {
    return term.indexOf(' ') >= 0 ?  null :
    {
        id: term,tag: term
      };
  },multiple: true,data:{ results: data,text: function(item) { return item.tag; } },formatSelection: format,formatResult: format,formatNoMatches: function(term) { return "\"" + term + "\" <b>Is Invalid.</b> <a onclick=\"sanitize('"+ term +"')\">Clear Invalid Charecters</a>" }
});

解决方法

在黑客攻击之后,我意识到我应该将新项目设置为“数据”属性而不是值.
var newList = $.merge( $('#select').select2('data'),tag: a
      }]);
$("#select").select2('data',newList)
原文链接:https://www.f2er.com/js/158010.html

猜你在找的JavaScript相关文章