由于目前在接触聊天室项目,接到一个需求实现一个类似QQ表情。在网上找了一款jquery经典表情插件。下面介绍一个用法:

HTML:

  首先在html页面的head中引入jQuery库文件和QQ表情插件jquery.qqFace.js文件

<script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
   <script type="text/javascript" src="jquery.qqFace.js"></script>
然后在body中加入以下html代码:

   <div id="show"></div>
<div class="comment">
<div class="com_form">
<textarea class="input" id="saytext" name="saytext"></textarea>
<p><span class="emotion">表情</span><input type="button" class="sub_btn" value="提交"></p>
</div>
</div>

CSS:

我们用CSS来美化页面,关键是表情按钮图片span.emotion的鼠标滑上与移开效果,以及调用表情插件后,显示的表情.qqFace面板效果,请看代码:

 .comment{width:680px; margin:20px auto; position:relative}
.comment h3{height:28px; line-height:28px}
.com_form{width:100%; position:relative}
.input{width:99%; height:60px; border:1px solid #ccc}
.com_form p{height:28px; line-height:28px; position:relative}
span.emotion{width:42px; height:20px; background:url(icon.gif) no-repeat 2px 2px;
padding-left:20px; cursor:pointer}
span.emotion:hover{background-position:2px -28px}
.qqFace{margin-top:4px;background:#fff;padding:2px;border:1px #dfe6f6 solid;}
.qqFace table td{padding:0px;}
.qqFace table td img{cursor:pointer;border:1px #fff solid;}
.qqFace table td img:hover{border:1px #0066cc solid;}
#show{width:680px; margin:20px auto}

jquery:

当我们点击页面输入框下方那个笑脸时,触发调用qqface表情插件,简单几行就搞定。

 $(function(){
$('.emotion').qqFace({ assign:'saytext', //给输入框赋值
path:'face/' //表情图片存放的路径
});
...
});

当选择表情图片后,输入框中会插入一段如[em_5]之类的代码,代表插入的表情图片,实际应用中,点提交按钮后应该将这段表情代码连同其他内容插入到数据表中。而在页面显示的时候,我们应该将表情代码替换成真正的图片显示在页面上。下面的代码是插入表情图片后,点击提交按钮,使用javascript自定义函数将表情代码替换并显示:

 $(function(){
...
$(".sub_btn").click(function(){
var str = $("#saytext").val();
$("#show").html(replace_em(str));
});
});
function replace_em(str){
str = str.replace(/\</g,'<;');
str = str.replace(/\>/g,'>;');
str = str.replace(/\n/g,'<;br/>;');
str = str.replace(/\[em_([0-9]*)\]/g,'<img src="face/$1.gif" border="0" />');
return str;
}

下面着重介绍下在nodejs+express4中的应用:

步骤如下:

1:加入引用表情的span

         <div class="send-out">
<span class="emotion" id="emotion"><img class="head_picture" src="/images/r-middle-pic07.png">表情</span>
<input class="send-text" id="Y_iSend_Input" type="text" maxlength="100" value="">
<input id="Y_iSend_Bt" class="out_text" onclick="CHAT.submit();" type="button" value="发送"/>
</div>

2:加入头文件并调用jquery

 <script type="text/javascript" src="/js/jquery.qqFace.js"></script>
$(function(){
$('.emotion').qqFace({
assign:'Y_iSend_Input', //给输入框赋值
path:'/face/' //表情图片存放的路径
});
});

3:用正则替换输入的[]表情

w.CHAT={
replace_em: function (str) {
str = str.replace(/\</g, '<;');
str = str.replace(/\>/g, '>;');
str = str.replace(/\n/g, '<;br/>;');
str = str.replace(/\[em_([0-9]*)\]/g, '<img src="/face/$1.gif" border="0" />');
return str;
}, //提交聊天消息内容
submit: function () { var str = $("#Y_iSend_Input").val(); $("#Y_iSend_Input").val(CHAT.replace_em(str)); var message_text = d.getElementById("Y_iSend_Input").value;
}
}

4:显示

nodejs聊天室,浅析。

 

经典qq表情插件(html+nodejs应用)的更多相关文章

  1. 一款基于jQuery的QQ表情插件

    我们在QQ聊天或者发表评论.微博时,会有一个允许加入表情的功能,点击表情按钮,会弹出一系列表情小图片,选中某个表情图片即可发表的丰富的含表情的内容.今天和大家分享一款基于jQuery的QQ表情插件,您 ...

  2. 亲手用模块化方式写一个jquery QQ表情插件。

    在回复或是评论的时候,很多时间都需要有回复表情的功能,然后而需要插入QQ表情可以是最常见的. 插件也写多很多个了,这次写插件就下了一个决定.就是使用模块化来开发. 最后在我的源代码中有这样子一段: v ...

  3. 腾讯QQ表情为什么如此成功呢

    本人为原创作品:e良师益友 ,转载是并且注明 e良师益友网导读:腾讯开发的QQ表情功能给中国人的聊天增添一抹幽默,很多时候图片表情比话语更好的表达我们的意思,翻开你的聊天记录就会发现夹杂这很多不同的表 ...

  4. WPF 微信 MVVM 【续】发送部分QQ表情

    今天主要记录的就是发送QQ表情, WPF 微信 MVVM里写了,后期为了发送QQ表情,需要把TextBox替换为RichTextBox,接下来就说说替换的过程. 一.支持Binding的RichTex ...

  5. QQ表情的发送与接收

    我想大家对QQ表情一定不会陌生,一个个小头像极大丰富了聊天的乐趣,使得聊天不再是简单的文字叙述,还能够配上喜.怒.哀.乐等表达人物心情的小图片.本文重点要介绍的内容就是如何在微信公众平台使用QQ表情, ...

  6. QQ表情动图,增加写博客的乐趣

    QQ表情动图,增加写博客的乐趣 body{margin:0px;}

  7. 【Discuz】关闭QQ互联插件提示信息:系统繁忙,请稍后再试

    版本:X3.2.20160601 提示信息 系统繁忙,请稍后再试 解决方案 Step1.删除QQ互联插件目录 网站的根目录\source\plugin\qqconnect Step2.上传原始QQ互联 ...

  8. js从0开始构思表情插件

    前言: 由于公司开发项目需要用到表情插件,在网上百度了好久,很多表情插件,都是需要引用好多js文件,也没有现成的demo可以使用,还有一些插件是引用好多图片,每一个表情都要重新请求一下.为了这样一个功 ...

  9. 消除QQ表情小游戏

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. 专题 查找与排序的Java代码实现(一)

    专题 查找与排序的Java代码实现(一) 查找(Searching) 线性查找(linear search) 属于无序查找算法,适合于存储结构为顺序存储或链接存储的线性表. 基本思想:从数据结构线形表 ...

  2. "Web Scraping with Python"笔记(一)

    1.  合法性:抓取的数据用于个人使用,不存在问题:数据用于转载,需注意抓取的数据类型. 一般情况,抓取的真实数据(营业地址,电话清单等)允许转载.而原创数据(比如意见和评论)受版权限制不能转载. 2 ...

  3. 从零开始学spring cloud(一) -------- spring cloud 简介

    1.微服务简介 1.1.单体架构 一个归档包(例如war格式)包含了应用所有功能的应用程序,我们通常称之为单体应用.架构单体应用的方法论,我们称之为单体应用架构. 缺点:1. 复杂性高以笔者经手的一个 ...

  4. 【Python深入】Python中继承object和不继承object的区别

    python中定义class的时候,有object和没有object的不同?例如: class Solution(object): class Solution(): 这俩的区别在于—————— 在p ...

  5. FortiGate外网IPSec链路及运维专线链路到个别网段不通

    1.现状: 如图,用户网段有192.168.50.0/24.192.168.51.0/24和192.168.52.0/24.192.168.53.0/24.在防火墙上有静态路由到运维专线的10.160 ...

  6. java_19List 集合

    1List集合 有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 与 s ...

  7. Iris数据集实战

    本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视化部分进行了重点介绍. 环境 win8, python3.7, jupyter notebook 目录 1. 项目背景 2. 数据概 ...

  8. java ssh执行shell脚本

    1.添加依赖 com.jcraft:jsch ch.ethz.ganymed:ganymed-ssh2:262 2.获取连接 conn = new Connection(ip, port); conn ...

  9. PHP开发——函数

    函数的定义 l  函数是一段命名的代码段. 函数可以减轻工作量,减少重复的代码,方便后期维护. 函数的参数 l  实参:调用函数时,传递的参数就是实参,含有真正数据的. l  形参:定义函数时的参数. ...

  10. spring入门--spring入门案例

    spring是一个框架,这个框架可以干很多很多的事情.感觉特别吊.但是,对于初学者来说,很难理解spring到底是干什么的.我刚开始的时候也不懂,后来就跟着敲,在后来虽然懂了,但是依然说不明白它到底是 ...