js,angular文字搜索高亮的代码

发表于 问题记录 分类,标签:

百度搜索查询功能,全文匹配,查找到后文本高亮。

实例:angular过滤器做法

var  app=angular.module('myApp',[]);


app.filter('htmlHighLight', function () {

            return function (input,param) {

                var  input=input;

                var  param=param;

                 

                // 最大数为5,所用用 slice方法给截取

                if($.trim(param)!==''){

                    // 去掉多余的空格

                    param= param.replace(/\s{2,}/ig,' ');

                    param=param.split(' ');

                    if(param.length>5){

                        param=param.slice(0,5);

                    }

                }else {

                    param=[];

                }

                //  数据格式化

                function htmlHighLightFormat(input,replaceString){

                    if(replaceString.length>0){

                        var  input=String(input);

                   //特殊字符需要进行转义

var  specialCode=['*' ,'.', '?', '+', '$', '^', '[', ']', '(' ,')', '{', '}', '|','/']

                        angular.forEach(replaceString, function (value,index) {

var  _flag=false;

//  遍历特殊字符

specialCode.forEach(function(_value,index){

if(value.indexOf(_value)!==-1){

value=value.split(_value).join('\\'+_value);

}

});

                            var  _parttern="/("+value+")/igm";

                    //  正则匹配

                                 input=input.replace(eval(_parttern),'<em class="fd-high-light">'+'$1'+'</em>');

                        });

                    }else {

                        input=input;

                    }

                    return input;

                };

                if( typeof input==='undefined'|| String(input)==='null'){

                input='';

                }else {

                input= htmlHighLightFormat(input,param);

                }

                return input;

            };

        })


0 篇评论

发表我的评论