使用jQuery tag handler开发一个带有标签功能的文章发布系统

本文介绍了一款轻量级jQuery插件,用于实现美观的标签处理功能,并结合jQuery UI实现了标签自动补全功能。文章详细展示了如何解决Firefox浏览器中中文自动补全的bug,并提供了HTML与JavaScript代码示例。
摘要由CSDN通过智能技术生成

使用jQuery tag handler开发一个带有标签功能的文章发布系统

在线演示1  在线演示2  本地下载

网站和web开发中我们常常需要处理类似标签添加功能的模块,以前我们也介绍过相关的jQuery插件 - textext,可以方便的添加标签增减和自动补齐相关功能。今天这里我们将使用另外一个非常轻量级的jQuery插件来实现漂亮的标签处理功能,这里我们将使用以前的超酷留言板系统为基础来实现一个完整功能的留言发布系统,希望大家喜欢!

主要使用插件

注意:jQuery UI的autocomplete在Firefox下处理中文自动补齐功能有个bug,你需要自己解决,解决方法如下:

找到jQueryUI中的如下代码:

            .bind( "blur.autocomplete", function( event ) {
                if ( self.options.disabled ) {
                    return;
                }

                clearTimeout( self.searching );
                // clicks on the menu (or a button to trigger a search) will cause a blur event
                self.closing = setTimeout(function() {
                    self.close( event );
                    self._change( event );
                }, 150 );
            });

修改为:

            .bind( "blur.autocomplete", function( event ) {
                if ( self.options.disabled ) {
                    return;
                }

                clearTimeout( self.searching );
                // clicks on the menu (or a button to trigger a search) will cause a blur event
                self.closing = setTimeout(function() {
                    self.close( event );
                    self._change( event );
                }, 150 );
            }).bind("input.autocomplete", function() {
                // 修复在Firefox中不支持中文的BUG
                self.search(self.item);
            }); 

如果你直接下载本文演示,已经修改此Bug。

在本文中,我们修改了jQuery tag handler的一些逻辑,缺省使用这个插件,如果你尝试输入重复的标签内容,你会发现无法输入,在我们例子中,如果你尝试输入重复标签,会发现,已存在的标签会闪烁提示你。

HTML代码

html代码非常简单,只需要指定需要生成标签的容器,如下:

<div  id="living-effect" class="tag-wrapper">
    <ul id="tags"></ul>
</div>    
       

这里我们使用id='tags'来指定标签生成容器。

Javascript代码

$(function(){
    $('#tags').tagHandler({
        assignedTags: [ 'GBin1'],
        availableTags: [ 'HTML', 'CSS', 'Javascript', 'Dojo', 'Mootools', 'jQuery', 'jQuery插件', 'SEO', '素材', '图标' ],
        autocomplete: true,
        onAdd: function(tag){
            var addflag = true,tags = $('#tags').tagHandler("getTags");
            jQuery.each(tags, function (i, e) {
                if(tag.toUpperCase()===e.toUpperCase()){
                    $('#tags').find('.tagItem').each(function(){
                        if($(this).html().toLocaleUpperCase()===tag.toLocaleUpperCase()){
                            $(this).animate({opacity: 0.55}).delay(20).animate({opacity: 1}).animate({opacity: 0.55}).delay(20).animate({opacity: 1});
                        }
                    });
                    //$('#log').hide(0).html("标签已存在").show().delay(2000).fadeOut();
                    addflag = false;
                }
            });
            return addflag;
        }
    });
});

以上代码定义了标签相关属性及其callback方法,这里我们再添加新标签的callback方法里判断是否重复,如果有重复则生成闪烁效果。

我们设定autocomplete为true,则插件会调用jQueryUI的自动补齐autocomplete方法,帮助用户输入标签。

assignTags设定了缺省显示的标签,avaiableTags设置了所有有效的标签。 这个插件包含其其它的选项和callback方法,具体请参考插件的ReadMe。

是不是很简单,希望大家喜欢这个演示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值