基于jquery 标签添加修改功能

          原本是看到朱一(http://zyiangel.blogbus.com/)博客,觉得他写的添加标签的功能很有意思,然后下来用了后,感觉不是很完善,修改不方便,浏览器兼容性也不是很好

          由于最近项目可能可以用的上,于是自己动手做了一下修改,完成了比较完善的添加修改标签功能,核心代码如下:

         

<!DOCTYPE HTML>
 <html lang="en-US">
 <head>
     <meta charset="UTF-8">
     <title>tagInputDemo</title>
     <style type="text/css">
     body{font-size:14px;}
     /* self     */
     #taginputblock{border:2px solid #333;padding:10px;border-radius:3px;margin:50px;}
     /* taginput */
     .taginput{}
     .taginput-input{height:30px;min-width:80px;border:0;background:transparent;outline:none;display:inline-blcok;}
  .tabinput{height:33px;width:55px;border:0;background:transparent;outline:none;display:inline-blcok;
    color:#E2FFFF;font-size:14px;}
     .taginput-inputblock{height:30px;border:0;background:transparent;margin:0 5px;position:relative;display:inline-block;}
     .taginput-tag{position:relative;display:inline-block;height:28px;padding:0 20px 0 10px;line-height:30px;background:#66A3D2;margin:1px 5px;border-radius:2px;box-shadow:0 0 5px #000;color:#fff;}
     .taginput-tag-close{position:absolute;top:5px;right:5px;font-size:12px;line-height:12px;}
     .taginput-tag-placeholder{position:absolute;top:0;left:0;bottom:0;right:0;line-height:30px;color:#aaa;}
     </style>
     <script type="text/javascript" src="jquery.js" ></script>
     <script type="text/javascript">
     function tagInput(fatherNode,$){
         var This = this;
             block = $('<div class="taginput"></div>'),
             input = $('<input type="text" class="taginput-input"/>'),
             inputBlock = $('<div class="taginput-inputblock"/></div>'),
             placeholder = $('<span class="taginput-tag-placeholder">+添加标签</span>');
         block.append(inputBlock.append(input).append(placeholder)).appendTo(fatherNode);
         this.createTag = function(tagName){
             var tag = $('<span class="taginput-tag"><span class="taginput-html">'+tagName+'</span></span>'),
                 close = $('<span class="taginput-tag-close cursor-pointer">x</span>');
             tag.get(0).tagValue = tagName;
             close.click(function(){tag.remove();});
             tag.append(close).insertBefore(inputBlock);
             tag.dblclick(function(){
                 var innertag=tag.find(".taginput-html");
                 var innerhtml=innertag.html();
                 var taginput=$("<input class='tabinput' value="+innerhtml+">");
                 innertag.html(taginput);
              $('.tabinput').focus().bind("blur",function(){
                 innertag.html($('.tabinput').val());
               });
           });
   };
         this.getTags = function(){
             var nodes = block.find('.taginput-tag'),
                 list = [];
             for(var i=0;i<nodes.length;i++){
                 list.push(nodes[i].tagValue);
             }
             return list;            
        };
         placeholder.click(function(){
             $(this).hide();
             input.focus();
         });
         input.focusin(function(){
             placeholder.hide();
         });
         input.focusout(function(){
             placeholder.show();
             this.value = '';
         });
         input.keydown(function(e){
             if(e.keyCode == 32 || e.keyCode == 13){
                 var value = $.trim(this.value);
                 if(value){
                     This.createTag(value);
                     this.value = '';
                     return false;
                 }
             }else if(e.keyCode == 8){
                 if(!this.value){
                     var last = inputBlock.prev();
                     if(last){
                         last.remove();
                     }
                 }
             }
         });
     }
     </script>
 </head>
 <body>
     <div id="taginputblock"></div><br />
     </div>
     <script type="text/javascript">
     var tag = new tagInput($('#taginputblock'),$);
     tag.createTag('tag1');
     tag.createTag('tag2');
     </script>
     </body>
 </html>


       核心js函数用法:添加tag: createTag(tagName); ----tagName str ;
                                   获取tag: getTags();-----return array 

                                   双击即可编辑已有tag,编辑完后自动保存

   
      效果:

    ( 在此也非常感谢朱一童鞋的代码分享)

    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值