(function ($) { $.fn.emoji = function (params) { var defaults = { button: '', place: 'after', emojis: ['🙂', '🙁', '😀', '😁', '😂', '😃', '😄', '😅', '😆', '😇', '😈', '😉', '😊', '😋', '😌', '😍', '😎', '😏', '😐', '😑', '😒', '😓', '😔', '😕', '😖', '😗', '😘', '😙', '😚', '😛', '😜', '😝', '😞', '😟', '😠', '😡', '😢', '😣', '😤', '😥', '😦', '😧', '😨', '😩', '😪', '😫', '😬', '😭', '😮', '😯', '😰', '😱', '😲', '😳', '😴', '😵', '😶', '😷', '😸', '😹', '😺', '😻', '😼', '😽', '😾', '😿', '🙀', '🙃', '💩', '🙄', '👌','👍', '👎', '🙈', '🙉', '🙊'], fontSize: '20px', listCSS: { position:'fixed', width:'100%', 'left':'0', 'bottom':'0', 'z-index':'9999999', 'background-color':'rgba(0, 0, 0, 0.85)', display:'none', 'text-align':'left', 'padding':'15px 10px 10px 10px', 'box-sizing':'border-box' }, rowSize: 8, }; var settings = {}; if (!params) { settings = defaults; } else { for (var n in defaults) { settings[n] = params[n] ? params[n] : defaults[n]; } } this.each(function (n, input) { var $input = $(input); function showEmoji() { $list.show(); $input.focus(); setTimeout(function () { $(document).on('click', closeEmoji); }, 1); } function closeEmoji() { $list.hide(); $(document).off('click', closeEmoji); } function clickEmoji(ev) { if (input.selectionStart || input.selectionStart == '0') { var startPos = input.selectionStart; var endPos = input.selectionEnd; input.value = input.value.substring(0, startPos) + ev.currentTarget.innerHTML + input.value.substring(endPos, input.value.length); } else { input.value += ev.currentTarget.innerHTML; } //closeEmoji(); $input.focus(); input.selectionStart = startPos + 2; input.selectionEnd = endPos + 2; } var $button = $("").html(settings.button).css({cursor:'pointer', width:'35px', height:'35px', transform:'translateY(-20px)', 'display':'inline-block', 'margin':'0 20px 0 20px'}).on('click', showEmoji); var $list = $('
').css(defaults.listCSS).css(settings.listCSS); for (var n in settings.emojis) { if (n > 0 && n % settings.rowSize == 0) { //$("
").appendTo($list); } $("").html(settings.emojis[n]).css({cursor: 'pointer', 'font-size':'36px', 'margin':'10px', 'line-height':'50px'}).on('click', clickEmoji).appendTo($list); } $("#smb").prepend($button); $list.insertAfter($input); }); return this; }; } )(jQuery);