/** * jquery.emoticons.js 1.0 * http://jquerywidget.com */ ;(function (factory) { if (typeof define === "function" && (define.amd || define.cmd) && !jQuery) { // AMD鎴朇MD define([ "jquery" ],factory); } else if (typeof module === 'object' && module.exports) { // Node/CommonJS module.exports = function( root, jQuery ) { if ( jQuery === undefined ) { if ( typeof window !== 'undefined' ) { jQuery = require('jquery'); } else { jQuery = require('jquery')(root); } } factory(jQuery); return jQuery; }; } else { //Browser globals factory(jQuery); } }(function ($) { $.emoticons = function(parameter,getApi) { if(typeof parameter == 'function'){ //閲嶈浇 getApi = parameter; parameter = {}; }else{ parameter = parameter || {}; getApi = getApi||function(){}; } var defaults = { 'prefix':'widget', 'publisherCls':'commentPopup', 'triggerCls':'trigger', 'activeCls':'active', 'path':'/templates/public4/assets/library/emoticons/emoji/', 'list':[ {'title':'寰瑧','url':'weixiao.gif'}, {'title':'鍢诲樆','url':'xixi.gif'}, {'title':'鍝堝搱','url':'haha.gif'}, {'title':'鍙埍','url':'keai.gif'}, {'title':'鍙€?,'url':'kelian.gif'}, {'title':'鎸栭蓟','url':'wabi.gif'}, {'title':'鍚冩儕','url':'chijing.gif'}, {'title':'瀹崇緸','url':'haixiu.gif'}, {'title':'鎸ょ溂','url':'jiyan.gif'}, {'title':'闂槾','url':'bizui.gif'}, {'title':'閯欒','url':'bishi.gif'}, {'title':'鐖变綘','url':'aini.gif'}, {'title':'娉?,'url':'lei.gif'}, {'title':'鍋风瑧','url':'touxiao.gif'}, {'title':'浜蹭翰','url':'qinqin.gif'}, {'title':'鐢熺梾','url':'shengbing.gif'}, {'title':'澶紑蹇?,'url':'taikaixin.gif'}, {'title':'鐧界溂','url':'baiyan.gif'}, {'title':'鍙冲摷鍝?,'url':'youhengheng.gif'}, {'title':'宸﹀摷鍝?,'url':'zuohengheng.gif'}, {'title':'鍢?,'url':'xu.gif'}, {'title':'琛?,'url':'shuai.gif'}, {'title':'鍚?,'url':'tu.gif'}, {'title':'鍝堟瑺','url':'haqian.gif'}, {'title':'鎶辨姳','url':'baobao.gif'}, {'title':'鎬?,'url':'nu.gif'}, {'title':'鐤戦棶','url':'yiwen.gif'}, {'title':'棣嬪槾','url':'chanzui.gif'}, {'title':'鎷滄嫓','url':'baibai.gif'}, {'title':'鎬濊€?,'url':'sikao.gif'}, {'title':'姹?,'url':'han.gif'}, {'title':'鍥?,'url':'kun.gif'}, {'title':'鐫?,'url':'shui.gif'}, {'title':'閽?,'url':'qian.gif'}, {'title':'澶辨湜','url':'shiwang.gif'}, {'title':'閰?,'url':'ku.gif'}, {'title':'鑹?,'url':'se.gif'}, {'title':'鍝?,'url':'heng.gif'}, {'title':'榧撴帉','url':'guzhang.gif'}, {'title':'鏅?,'url':'yun.gif'}, {'title':'鎮蹭激','url':'beishang.gif'}, {'title':'鎶撶媯','url':'zhuakuang.gif'}, {'title':'榛戠嚎','url':'heixian.gif'}, {'title':'闃撮櫓','url':'yinxian.gif'}, {'title':'鎬掗獋','url':'numa.gif'}, {'title':'浜掔矇','url':'hufen.gif'}, {'title':'涔﹀憜瀛?,'url':'shudaizi.gif'}, {'title':'鎰ゆ€?,'url':'fennu.gif'}, {'title':'鎰熷啋','url':'ganmao.gif'}, {'title':'蹇?,'url':'xin.gif'}, {'title':'浼ゅ績','url':'shangxin.gif'}, {'title':'鐚?,'url':'zhu.gif'}, {'title':'鐔婄尗','url':'xiongmao.gif'}, {'title':'鍏斿瓙','url':'tuzi.gif'}, {'title':'OK','url':'ok.gif'}, {'title':'鑰?,'url':'ye.gif'}, {'title':'GOOD','url':'good.gif'}, {'title':'NO','url':'no.gif'}, {'title':'璧?,'url':'zan.gif'}, {'title':'鏉?,'url':'lai.gif'}, {'title':'寮?,'url':'ruo.gif'}, {'title':'鑽夋偿椹?,'url':'caonima.gif'}, {'title':'绁為┈','url':'shenma.gif'}, {'title':'鍥?,'url':'jiong.gif'}, {'title':'娴簯','url':'fuyun.gif'}, {'title':'缁欏姏','url':'geili.gif'}, {'title':'鍥磋','url':'weiguan.gif'}, {'title':'濞佹','url':'weiwu.gif'}, {'title':'璇濈瓛','url':'huatong.gif'}, {'title':'铚$儧','url':'lazhu.gif'}, {'title':'铔嬬硶','url':'dangao.gif'}, {'title':'鍙戠孩鍖?,'url':'fahongbao.gif'} ], 'top':0, 'left':0, 'onShow':function(){}, 'onHide':function(){}, 'onSelect':function(){} }; var options = $.extend({}, defaults, parameter); $('.'+options.prefix+'-layer').remove(); var _api = {}; var $document = $(document); var $body = $('body'); var $layer = $('
').appendTo($body); var $tool = $('
').appendTo($layer); var $close = $('').appendTo($tool); var $panel = $('
').appendTo($layer); var $list = $('').appendTo($panel); var $trigger = null; var $textarea = null; var _hash = {}; //缁撴瀯澶勭悊 $layer.css({ 'position':'absolute', 'display':'none' }); $.each(options.list,function(index,item){ _hash[item.title] = options.path+item.url; $list.append('
  • '); }); //鎺ュ彛澶勭悊 _api.getTextarea = function(){ return $textarea; }, _api.format = function(str){ var list = str.match(/\[[\u4e00-\u9fa5]*\w*\]/g); var filter = /[\[\]]/g; var title; if(list){ for(var i=0;i '); } } } return str; }; //鍏抽棴寮规 var closeLayer = function(){ if($trigger){ $trigger.removeClass(options.activeCls); } $layer.hide(); $trigger = null; $textarea = null; options.onHide(); }; //浜嬩欢缁戝畾 $document.on('click','.'+options.triggerCls,function(){ $trigger = $(this); var $publisher = $trigger.parents('.'+options.publisherCls); $textarea = $publisher.find('textarea'); var offset = $trigger.offset(); var height = $trigger.outerHeight(); $trigger.addClass(options.activeCls); $layer.find('img').each(function(){ var $this = $(this); $this.attr('src',$this.data('src')); }); $layer.css({ left: offset.left+options.left, top: offset.top+height+options.top }).show(); options.onShow(); }); $document.on('click',function(e){ var $target = $(e.target); if(!$target.is('.'+options.triggerCls)&&!$target.closest('.'+options.prefix+'-layer').length){ closeLayer(); } }); $layer.on('click','.'+options.prefix+'-close',closeLayer); $layer.on('click','li',function(){ var $this = $(this); var title = $this.attr('title'); if($textarea){ insertText($textarea[0],'['+title+']'); } options.onSelect(_api); $layer.hide(); $trigger = null; $textarea = null; options.onHide(); }); //涓轰簡鍏煎insertText $document.on('select click keyup','.'+options.publisherCls+' textarea',function(){ if (this.createTextRange){ this.caretPos = document.selection.createRange().duplicate(); } }); //鍒濆鍖 getApi(_api); return this; }; //鎻掑叆鏂囧瓧 function insertText(obj,str) { if(document.all && obj.createTextRange && obj.caretPos){ var caretPos=obj.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ? str+'' : str; }else if (typeof obj.selectionStart === 'number' && typeof obj.selectionEnd === 'number') { var startPos = obj.selectionStart, endPos = obj.selectionEnd, cursorPos = startPos, tmpStr = obj.value; obj.value = tmpStr.substring(0, startPos) + str + tmpStr.substring(endPos, tmpStr.length); cursorPos += str.length; obj.selectionStart = obj.selectionEnd = cursorPos; } else { obj.value += str; } } }));