emoji表情的js制作和方法
2016-02-25 17:59
281 查看
调用了一个朋友些的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; } });
相关文章推荐
- 原生js轮播以及setTimeout和setInterval的理解
- Js定时跳转
- 一些JS常用的方法
- JavaScript闭包面试题
- JsonPropertyOrder无法为DTO对象进行属性排序
- 次讲解js中的回收机制是怎么一回事。
- js函数中参数的传递
- 20个JS优化代码技巧
- 彻底理解js中this的指向,不必硬背。
- js对数组按顺序排序
- js观察者模式简单实现
- js获取浏览器基本信息:document.body.clientWidth/clientHeight/scrollWidth/scrollTop。
- Js实现AES/RSA加密
- Js随机生成指定长度字符串
- Javascript—XPATH技术解析XML
- javascript 中的arguments.callee
- JS中showModalDialog 详细使用
- 关于使用非阻塞方式下载JavaScript
- <javascript>每日小结
- el表达式里面fn的用法