emoji表情的js制作和方法

调用了一个朋友些的js库,准备有时间自己实现一遍。更改了表情解析的代码,有时间把表情生成那一块也改掉

/*
 @ 文本框插入表情插件
 @ 作者:水墨寒 Smohan.net
 @ 日期:2013年1月28日
*/

    $.fn.smohanfacebox = function(options) {
        var defaults = {
        Event : "click", //响应事件     
        divid : "Smohan_FaceBox", //表单ID(textarea外层ID)
        textid : "TextArea" //文本框ID
        };
        var options = $.extend(defaults,options);
        var $btn = $(this);//取得触发事件的ID
        
        //创建表情框
        var faceimg = '';
        for(i=0; i < 60; i++){  //通过循环创建60个表情,可扩展
                faceimg+='<li><a href="javascript:void(0)"><img src="/frontEnd/images/face/'+(i+1)+'.gif" face="&' + (i+1) + ',"/></a></li>';
            };
        $("#"+options.divid).prepend("<div id='SmohanFaceBox'><span class='Corner'></span><div class='Content'><h3><span>常用表情</span><a class='close' title='关闭'></a></h3><ul>"+faceimg+"</ul></div></div>");
         $('#SmohanFaceBox').css("display",'none');//创建完成后先将其隐藏
        //创建表情框结束
        
        var $facepic = $("#SmohanFaceBox li img");
        //BTN触发事件,显示或隐藏表情层
        $btn.live(options.Event,function(e) {
            if($('#SmohanFaceBox').is(":hidden")){
            $('#SmohanFaceBox').show(360);
            $btn.addClass('in');
            }else{
            $('#SmohanFaceBox').hide(360);
            $btn.removeClass('in');
                }
            });
        //插入表情
        $facepic.die().click(function(){
             $('#SmohanFaceBox').hide(360);
             //$("#"+options.textid).focus();
             //$("#"+options.textid).val($("#"+options.textid).val()+$(this).attr("face"));
             $("#"+options.textid).die().insertContent($(this).attr("face"));
             $btn.removeClass('in');
            });         
        //关闭表情层
        $('#SmohanFaceBox h3 a.close').click(function() {
            $('#SmohanFaceBox').hide(360);
             $btn.removeClass('in');
            }); 
        //当鼠标移开时,隐藏表情层,如果不需要,可注释掉
         $('#SmohanFaceBox').mouseleave(function(){
             $('#SmohanFaceBox').hide(560);
             $btn.removeClass('in');
             });    

  };  
  
  // 【漫画】 光标定位插件
    $.fn.extend({  
        insertContent : function(myValue, t) {  
            var $t = $(this)[0];  
            if (document.selection) {  
                this.focus();  
                var sel = document.selection.createRange();  
                sel.text = myValue;  
                this.focus();  
                sel.moveStart('character', -l);  
                var wee = sel.text.length;  
                if (arguments.length == 2) {  
                var l = $t.value.length;  
                sel.moveEnd("character", wee + t);  
                t <= 0 ? sel.moveStart("character", wee - 2 * t - myValue.length) : sel.moveStart("character", wee - t - myValue.length);  
                sel.select();  
                }  
            } else if ($t.selectionStart || $t.selectionStart == '0') {  
                var startPos = $t.selectionStart;  
                var endPos = $t.selectionEnd;  
                var scrollTop = $t.scrollTop;  
                $t.value = $t.value.substring(0, startPos) + myValue + $t.value.substring(endPos,$t.value.length);  
                this.focus();  
                $t.selectionStart = startPos + myValue.length;  
                $t.selectionEnd = startPos + myValue.length;  
                $t.scrollTop = scrollTop;  
                if (arguments.length == 2) { 
                    $t.setSelectionRange(startPos - t,$t.selectionEnd + t);  
                    this.focus(); 
                }  
            } else {                              
                this.value += myValue;                              
                this.focus();  
            }  
        }  
    });
 
 //表情解析
$.extend({
    replaceface : function(faces){
        //for(i=0;i<60;i++){ 源代码
            //faces=faces.replace('<emt>'+ (i+1) +'</emt>','<img src="/frontEnd/images/face/'+(i+1)+'.gif">');

        //}
        return faces.replace(/\&([0-9]+)\,/g, function (str,$0) { //修改后代码
            return '<img src="/frontEnd/images/face/'+ $0 +'.gif">';
        });
         //$(this).html(faces);
            //return faces;
         }
    });

转载于:https://www.cnblogs.com/clearfix/p/5217888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值