当前位置 : 主页 > 网络编程 > JavaScript >

标签插件 jquery

来源:互联网 收集:自由互联 发布时间:2021-07-03
标签添加,按下回车键自动匹配添加; 标签删除,可以按退格键进行删除或者直接鼠标点击删除 标签添加自动换行 默认最多可以添加10个标签,可自行设定值limit值来更改 默认标签,
标签添加,按下回车键自动匹配添加;

标签删除,可以按退格键进行删除或者直接鼠标点击删除

标签添加自动换行

默认最多可以添加 10 个标签,可自行设定值 limit 值来更改

默认标签,使用参数为 tag,值用逗号进行分割

1. [代码][JavaScript]代码    

/**
 * 标签
 *
 * @author lock
 * @link https://github.com/lock-upme/jquerytag
 */
(function($) {
	$.fn.lockTag = function(options) {	
		var defaults = {
				tag : null, //默认标签,用于表单修改标签,以逗号分割
				limit : 10 //默认可以添加10个标签
		};
		var opts = $.extend(defaults, options);
		var obj= $(this);
		
		//添加
		var add = function(e) {
			obj.delegate('input', 'keypress', function(e) {
				var that = $(this);
				that.next().hide();
				
		        if (e.keyCode == 13) {		        
			        if (that.val() == '') { return false; }		        
		        	if (obj.find('.ui-tag').length == opts.limit) { that.val(''); return false; }	
		        	that.css('width', '60px').parent().before('<span class="ui-tag">#'+that.val()+'</span>');
		        	that.val('');
		        }		        
			});
		};
		
		//赋予Input焦点
		var inputFocus = function() {
			obj.delegate('.ui-iptwrap','click', function() {
				obj.find('input').focus();
			});		
		};
		
		//input失去焦点的时候,信息提示
		var tipsShow = function() {
			obj.delegate('input', 'blur',function() {
				var that = $(this);
				if (obj.find('.ui-tag').length == 0) {
					that.next().show();
				}
			});			
		};
		
		//退格键删除标签
		var removeBackspace = function() {
			obj.delegate('input', 'keydown', function(e) {				
		        if (e.keyCode == 8) {
		        	var that = $(this);
		        	if ($.trim(that.val()) == '') {
		        		that.parent().prev().remove();
		        	}
		        }
			});
		};
		
		//鼠标点击删除标签
		var removeMouse = function() {
			obj.delegate('.ui-tag', 'click', function(e){
				$(this).remove();
				if (obj.find('.ui-tag').length == 0) { obj.find('label').show(); }
			})
		};		
		
		//初始化
		var init = function() {			
			//初始化标签HTML
			var html = '';
			html += '<div class="ui-tags">';
			html += '<div class="ui-iptwrap">';
			html += '<input maxlength="20" /><label>添加相关标签,用回车分隔、退格/点击删除</label>';
			html += '</div>';
			html += '</div>';
			obj.html(html);
			
			if (opts.tag) {
				obj.find('input').css('width', '60px');
				var tagarr = opts.tag.split(',');
				$.each(tagarr, function(i, tag){
					obj.find('.ui-tags').prepend('<span class="ui-tag">#'+tag+'</span>');
				})
				obj.find('label').hide();
			}
			
			add();
			tipsShow();
			inputFocus();
			removeMouse();
			removeBackspace();
		};
		
		init();		
	};
})(jQuery);
网友评论