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


    使用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。

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

    欢迎访问GBin1.com
  • 相关阅读:
    如何在存储过程中临时设置数据库兼容级别
    PHP中如何防止SQL注入
    Android 源码下载
    HDU 2517 棋盘分割
    OceanBase里面的rowkey是什么概念,是由哪些要素构成的?
    JavaScript的递归之更多例子
    C++库研究笔记——生成一组随机数
    Neutron 如何支持多种 network provider
    理解 Neutron Server 分层模型
    Neutron 物理部署方案
  • 原文地址:https://www.cnblogs.com/gbin1/p/2506669.html
Copyright © 2020-2023  润新知