我使用下面的代码使用bootstrap标签输入过滤器提交标签,我想在标签中允许逗号。请帮忙。
$('.tagsinput').tagsinput({
maxTags: 15,
trimValue: true,
confirmKeys: [13],
allowDuplicates: false,
onTagExists: function(item, $tag) {
alert('Tag already exists')
$tag.hide.fadeIn();
}
});
答案 0 :(得分:9)
自撰写原始文件的时间it looks like two options now exist for this:delimiter
和delimiterRegex
。因此,您应该能够.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," });
//...