本来处理tags输入控件是很多的,比如select2,又比如chosen,都各有各的好处,但也各有各的不足。今天选择一款简单的插件:selectize.js Github: https://github.com/selectize/...。
Selectize.js特点就是容易用,来看看怎么用。
引入项目文件
<link href="https://cdn.bootcss.com/selectize.js/0.12.4/css/selectize.min.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/selectize.js/0.12.4/css/selectize.bootstrap3.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/selectize.js/0.12.4/js/standalone/selectize.min.js"></script>
selectize.bootstrap3.min.css
不是必须的,而且还没有原生的ui那么漂亮,但胜在和bootstrap风格统一。
初始化更简单
<input type="text" id="input-tags" />
$('#input-tags').selectize({
delimiter: ',',
persist: false,
create: function(input) {
return {
value: input,
text: input
}
}
});
这只能输入简单的tag,复杂一点的就完全无济于事,要想实现上图那种复杂布局的tag,并且能够加载远程服务器上的数据,还得花点时间配置一下选项。
$('#games').selectize({
options: [],
create: false,
valueField: 'id',
labelField: 'title',
searchField: 'title',
maxItems: 5,
render: {
option: function(item, escape) {
var tags = [];
for (var i = 0, n = item.tags.length; i < n; i++) {
tags.push('<span class="label label-default">' + escape(item.tags[i]) + '</span>');
}
return '<div>' +
'<div class="pull-left"><img src="' + escape(item.avatar) + '" style="max-width: 50px" alt=""></div>' +
'<div class="title pull-left" style="padding-left: 5px">' +
'<div><strong class="name">' + escape(item.title) + '</strong></div>' +
'<span class="label label-info">' + escape(item.category) + '</span>' +
'<div class="tags">' + (tags.length ? tags.join(' ') : '没有标签') + '</div>' +
'</div>' +
'</div>';
}
},
load: function(query, callback) {
if (!query.length) return callback();
$.ajax({
url: "{{ url('games/query') }}",
type: 'GET',
dataType: 'json',
data: {
term: query,
limit: 4
},
error: function() {
callback();
},
success: function(res) {
callback(res.results);
}
});
}
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。