如何在bootstrap标签输入过滤器中允许逗号?

时间:2015-05-09 13:54:27

标签: twitter-bootstrap bootstrap-tags-input

我使用下面的代码使用bootstrap标签输入过滤器提交标签,我想在标签中允许逗号。请帮忙。

$('.tagsinput').tagsinput({
        maxTags: 15,
        trimValue: true,
        confirmKeys: [13],
        allowDuplicates: false,
        onTagExists: function(item, $tag) {
            alert('Tag already exists')
            $tag.hide.fadeIn();
          }
    });

2 个答案:

答案 0 :(得分:9)

修改

自撰写原始文件的时间it looks like two options now exist for thisdelimiterdelimiterRegex。因此,您应该能够.tagsinput({ delimiter: '|' }).tagsinput({ delimiterRegex: /\s+/ })The default is still ,

原帖

没有选项,所以你必须更改插件的代码。 Line 87 of bootstrap-tagsinput.js分割,个字符。您可以将其更改为其他字符,例如;|。如果您想使其更具可扩展性,可以将splitOn: ','添加到defaultOptions,然后将第87行更改为var items = item.split(self.options.splitOn);。您也可以将self.options.splitOn &&添加到上面的if语句中,这样可以避免在没有任何内容可以拆分的情况下进行拆分。

因此,代码更改需要如下所示:

// Line 4
var defaultOptions = {
    splitOn: ','
    // ...
};

// Line 86
if (self.options.splitOn && typeof item === "string" && this.$element[0].tagName === 'INPUT') {
  var items = item.split(self.options.splitOn);
  // ...
}

您希望继续使用confirmKeys: [ 13 ],并且您可能希望使用<select multiple></select>而不是<input />,以便获得数组而不是逗号分隔的字符串当你$(".tagsinput").val();

这是an example

答案 1 :(得分:0)

将标记添加为对象而不是字符串,例如:

el.tagsinput({
  itemValue: 'value',
  itemText: 'text',
  maxTags: 15,
  trimValue: false,
  //...
});

el.tagsinput('add', { "value": 1 , "text": "Tag 1," });
el.tagsinput('add', { "value": 2 , "text": "Tag 2," });
//...