Как разрешить запятую в фильтре ввода тегов bootstrap?
Я использую ниже код для отправки тегов с помощью фильтра ввода тегов bootstrap, я хочу разрешить запятая в теги. Пожалуйста помочь.
$('.tagsinput').tagsinput({
maxTags: 15,
trimValue: true,
confirmKeys: [13],
allowDuplicates: false,
onTagExists: function(item, $tag) {
alert('Tag already exists')
$tag.hide.fadeIn();
}
});
2 ответов
редактировать
со времени написания оригинала похоже, что для этого существуют два варианта: delimiter
и delimiterRegex
. Так что вы должны быть в состоянии сделать .tagsinput({ delimiter: '|' })
или .tagsinput({ delimiterRegex: /\s+/ })
. по умолчанию по-прежнему ,
.
оригинальное сообщение
для этого нет возможности, поэтому вам придется изменить код для плагина. строка 87 bootstrap-tagsinput.js разбивает на ,
символ. Ты можешь изменить это. быть другим персонажем, как ;
или |
. Если вы хотите сделать его более расширяемым, вы можете добавить splitOn: ','
to 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();
здесь пример.
добавьте теги в качестве объектов вместо строк, например:
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," });
//...