一个jquery开发的标签功能加强插件,可以生成或删除标签,还能对输入重复标签进行检查,和JQuery autocomplete插件配合实现自动完成功能。

官网:http://xoxco.com/projects/code/tagsinput/

引入

<link href="../../resources/css/jquery.tagsinput.css" rel="stylesheet" type="text/css" />
一般引入<script type="text/javascript" src="../../resources/js/jquery.mytagsinput.js"></script> 此处我做了些更改,文件地址在文章末尾。

JavaScript

<script type="text/javascript"> 

        /***
* @Author sonet
* 如需更改Tags配置,请到jquery.tagsinput.js中更改
**/
//add tags
function onAddTag(tag) {
$.mpbAlert({
      //mpbAlert此处为自己的工具类,可更换为自己的弹出层
content:"确定添加"+tag,
icon:"question",
ok : function(){
//add tags
$.mpbAjax(
"/admin/job/addJobTypes",
{
data:{
_method:"PUT",
tagName:tag
},
async:false,
success:function(data){
LoadData();
location.reload();
}
}
);
//end add tags
},
cancel : function(){
$("#tags").removeTag(tag);
}
});
}
//remove tags
function onRemoveTag(tag) {
$.mpbAlert({
content:"确定删除"+tag,
icon:"question",
ok : function(){
//delete tags
$.mpbAjax(
"/admin/job/removeJobTypes",
{
data:{
_method:"DELETE",
tagName:tag
},
async:false,
success:function(data){
LoadData();
}
}
);
//delete add tags
},
cancel : function(){
$("#tags").addTag(tag);
}
});
}
//change tags
function onChangeTag(input,tag) {
alert("Changed a tag: " + tag);
} //tags controller
$(function() {
LoadData();
$("span .tag").click(function(){
alert("adsdad");
});
$("#tags").tagsInput({
width:'auto',
onAddTag:function(tag){
onAddTag(tag);
},
onRemoveTag:function(tag){
onRemoveTag(tag);
}
//,
// interactive:false //禁止增加标签
}); });
function LoadData(){
$.mpbAjax(
"/admin/job/getAllJobTypes",
{
data:{
_method:"GET"
},
async:false,
success:function(data){//拼字符串用于tag的显示
var strs="";
for(var i in data){
strs+=data[i].name+",";
}
strs=strs.substring(0,strs.length-1);
$("#tags").attr("value",strs);
}
}
);
} //edit tags
function editTags(value){
$.mpbAlert({
content:"确定修改为<input type=\"text\" id=\"editTags\" value=\""+value+"\">",
icon:"",
ok : function(){
var newTag = $("#editTags").val();
$.mpbAjax(
"/admin/job/updateJobTypes",
{
data:{
_method:"POST",
oldTag:value,
newTag:newTag
},
async:false,
success:function(data){
location.reload();
}
}
);
},
cancel : function(){
}
});
}
function addNewTag(){
var str = $("#addNewTag").val();
if($.isNotBlank(str)){
onAddTag(str);
}
}
</script>

xx.html>body

从后台取出来的值会通过js处理拼成以","分割的字符串赋值到id为tags的input标签的value属性中。

例如:a,b,c

<body>
请输入一个职位类别:<input type="text" id="addNewTag" value=""/><input type="submit" onclick="addNewTag();" value="添加" />
<form>
<p><label>职位类别管理:</label></p>
<input id="tags" type="text" class="tags" value="a,b,c" />
</form>
</body>

jquery.mytagsinput.js

// 配置区
$.fn.tagsInput = function(options) {
var settings = jQuery.extend({
interactive:true, //交互式
defaultText:'添加一个类别', //提示语
minChars:0,
width:'100px', //编辑区宽度
height:'300px', //编辑区高度
autocomplete: {selectFirst: false },
'hide':true,
'delimiter':',', //分隔符
'unique':true, //独一性
removeWithBackspace:true,
placeholderColor:'#666666',
autosize: true,
comfortZone: 20,
inputPadding: 6*2
},options);
//html页面的Input 框中的value会通过下面的代码分割
$.fn.tagsInput.importTags = function(obj,val) {
$(obj).val('');
var id = $(obj).attr('id');
var tags = val.split(delimiter[id]);
for (i=0; i<tags.length; i++) {
$(obj).addTag(tags[i],{focus:false,callback:false});
}
if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
{
var f = tags_callbacks[id]['onChange'];
f.call(obj, obj, tags[i]);
}
};
分割后的字符依次调用addTag方法将值添加到域中
//add tags
$.fn.addTag = function(value,options) {
options = jQuery.extend({focus:false,callback:true},options);
this.each(function() {
var id = $(this).attr('id'); var tagslist = $(this).val().split(delimiter[id]);
if (tagslist[0] == '') {
tagslist = new Array();
} value = jQuery.trim(value); if (options.unique) {
var skipTag = $(this).tagExist(value);
if(skipTag == true) {
//Marks fake input as not_valid to let styling it
$('#'+id+'_tag').addClass('not_valid');
}
} else {
var skipTag = false;
} if (value !='' && skipTag != true) {
$('<span>').addClass('tag').append(
$('<span>').text(value).append('&nbsp;&nbsp;'),
$('<a>', {
href : '#',
title : 'Removing tag',
text : 'x'
}).click(function () {
return $('#' + id).removeTag(escape(value));
})
).click(function(){//add edit funciton editTags(value);//调用外部函数通过弹出层形式进行更改 }).insertBefore('#' + id + '_addTag'); tagslist.push(value); $('#'+id+'_tag').val('');
if (options.focus) {
$('#'+id+'_tag').focus();
} else {
$('#'+id+'_tag').blur();
} $.fn.tagsInput.updateTagsField(this,tagslist); if (options.callback && tags_callbacks[id] && tags_callbacks[id]['onAddTag']) {
var f = tags_callbacks[id]['onAddTag'];
f.call(this, value);
}
if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
{
var i = tagslist.length;
var f = tags_callbacks[id]['onChange'];
f.call(this, $(this), tagslist[i-1]);
}
} }); return false;
};
//end add tags

jquery.mytagsinput.js

jquery.tagsinput.css

jQuery Tags Input Plugin 插件的使用的更多相关文章

  1. 基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  2. jQuery Tags Input 插件显示选择记录

    利用jQuery Tags Input 插件显示选择记录 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采 ...

  3. (转)基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    http://www.cnblogs.com/wuhuacong/p/3667703.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  4. 16款最佳的 jQuery Time Picker 时间选择插件

    jQuery 插件可以为你做许多事情,你可以很容易地把这些插件集成到您的网站.网络上的 jQuery 日期选择器和日历插件很多,但找不到很满意的时间选择器插件. 在这里,我们收集了最好的一组 jQue ...

  5. 30+最佳Ajax jQuery的自动完成插件的例子

    在这篇文章中,我们将介绍35个jQuery AJAX的自动完成提示例子. jQuery 的自动完成功能,使用户快速找到并选择一定的价值.每个人都想要快速和即时搜索输入栏位,因为这个原因,许 流行的搜索 ...

  6. jQuery框架学习第十一天:实战jQuery表单验证及jQuery自动完成提示插件

    jQuery框架学习第一天:开始认识jQueryjQuery框架学习第二天:jQuery中万能的选择器jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQuer ...

  7. day15—jQuery UI之widgets插件

    转行学开发,代码100天——2018-03-31 今天学习了jQuery UI的widgets插件,主要包括accordion插件 accordion插件 该插件表示折叠面板效果,点击头部展开/折叠被 ...

  8. 强大的支持多文件上传的jQuery文件上传插件Uploadify

    支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...

  9. jQuery文件上传插件Uploadify(转)

    一款基于flash的文件上传,有进度条和支持大文件上传,且可以多文件上传队列. 这款在flash的基础上增加了html5的支持,所以在移动端也可以使用. 由于官方提供的版本是flash免费,html5 ...

随机推荐

  1. UNIX环境高级编程--高级I/O(三)

    一.高级I/O 包括非阻塞I/O.记录锁.系统V流机制.I/O多路回转(select和poll函数).readv和writev函数以及存储映射I/O(mmap),这些都是高级I/O.    其实在上面 ...

  2. 求斐波那契数列的第n项

    问题描述:斐波那契数列是这样的一个数列,1,1,2,3,5,8,..,即前两项都是1,后面每一项都是其前面两项的和. 现在要你求出该数列的第n项. 分析:该问题是一个经典的数列问题,相信大家在很多语言 ...

  3. LINQ 基本子句之二 join

    Join子句据说可以实现3中连接关系. 1.内部连接——元素的连接关系必须同时满足被连接的两个数据源 2.分组连接 3.左外连接 1.最基本的,内部连接,类似于sql中inner join. 由于st ...

  4. Python 初学

    一. 前言 不怕各位园友笑话,今年年初时,我才知道有一个叫python的编程语言,听说它很大强大,而我只会用c#,正想好好再学一门新语言,还有人分享自己的经验时说,使用python制作的脚本,再做持续 ...

  5. 【Android & iOS】应用升级实现

    在移动应用中,都会有的一个功能就是应用版本升级,怎么实现这个功能呢? 基本的思路就是:对比当前使用的应用版本和最新的版本号,如果版本号不一致,就可以提示用户升级啦. Android中,可以通过一下方式 ...

  6. 利用html5中的localStorage获取网页被访问的次数

    利用html5中的localStorage获取网页被访问的次数 <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  7. iOS下Html页面中input获取焦点弹出键盘时挡住input解决方案

    问题描述 iOS系统下,移动web页面,inpu获取焦点弹出系统虚拟键盘时,偶尔会出现挡住input的情况,尽管概率不大,但是十分影响用户体验. 问题重现 原始页面:页面中有header.main.f ...

  8. jQuery工具函数下

    测试操作 1.判断是否为数组对象 $(function () { //判断是否为数组对象 var arr = [1,2,3,4]; alert($.isArray(arr));//true }); 2 ...

  9. JavaScript 字符串常用操作纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  10. shopnc数据库 批量修改商品价格

    1.商品价格统一上调50 2.商品价格个别上调50 UPDATE `nc_goods` SET `goods_price` = `goods_price` +50 where goods_id!=10 ...