JS实现很酷的EMAIL地址添加功能实例


Posted in Javascript onFebruary 28, 2015

本文实例讲述了JS实现很酷的EMAIL地址添加功能的方法。分享给大家供大家参考。具体实现方法如下:

<html>

<head>

<title>JS实现很酷的EMAIL地址添加功能</title>

<style type="text/css">

ul{ list-style:none; margin:0; padding:0;}

li{ margin:0; padding:0;}

#content{width:100%;}

#sendmail{float:left; width:60%;}

#friendlist{float:left; width:30%;}

#bxAddrFly{position:absolute;height:18px; width:46px;background:#EEE; border:1px #ccc solid;display:none;}

#tbAddrTree{ width:126px; float:left; padding:5px;border:1px #7F9DB9 solid;}

#tbAddrTree li{ width:100%; float:left;}

#tbAddrTree a{backgroud: #fff;width: 100%;color:#494949;text-decoration: none;float:left;}

#tbAddrTree a:hover{background: #e5edf6;}

</style>

<script type="text/javascript">

var ev={};

var flyDiv="bxAddrFly";

var inceptDiv="SendAddress";

var addEvent="addAddress()";

function oo(obj){return (document.getElementById) ? document.getElementById(obj): document.all[obj];}

function isNone(str){return str==null||str==""?true:false}

var Browser = new Object();

Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);

if (Browser.isFirefox) { extendEventObject();}

function extendEventObject() {

window.constructor.prototype.__defineGetter__("event", function(){

var o = arguments.callee.caller;

var e;

while(o != null){

e = o.arguments[0];

if(e && (e.constructor == Event || e.constructor == MouseEvent)) return e;

o = o.caller;

}

return null;

});
Event.prototype.__defineGetter__("srcElement", function () {

var node = this.target;

while (node.nodeType != 1) node = node.parentNode;

return node;

});

}

window.onload = function(){

var addrTree = oo('tbAddrTree');

addrTree.onmouseover = function(){addrTree_event(event)};

addrTree.onmouseout = function(){addrTree_event(event)};

addrTree.onclick = function(){addrTree_event(event)};

}

function addrTree_event(e){

var memberID,tr

var ee = e.srcElement; 

if(ee.tagName=="A"&&e.type=="mouseover"){ee.style.textDecoration="underline"}

if(ee.tagName=="A"&&e.type=="mouseout"){ee.style.textDecoration=""}

if(e.type=="click"&&e.srcElement.tagName=="A"){

var li=ee.parentNode.parentNode;

ev.AddInfo="\""+li.getAttribute("memberName")+"\"<\""+li.getAttribute("email")+"\">"

oo(flyDiv).innerHTML=li.getAttribute("memberName");

addrTree_add(e.clientX,e.clientY)

}

}

function addrTree_add(ex,ey){

if(oo(flyDiv).style.display=='none'||oo(flyDiv).style.display==''){oo(flyDiv).style.display='block';}

var inceptE = oo(inceptDiv);

var inceptEX = inceptE.offsetTop;   

var inceptEY = inceptE.offsetLeft;   

while(inceptE = inceptE.offsetParent){

inceptEX += inceptE.offsetTop;   

inceptEY += inceptE.offsetLeft;   

}

ev.flyArr=new Array(ex,ey,inceptEX,inceptEY,10);

fly(flyDiv,addEvent);

}
function fly(flyObj,flyRun){

var obj,a=ev.flyArr,x,y

if(flyObj!=null){

if(ev.flyObj!=null){

window.clearTimeout(ev.flyTm);

ev.flyObj.style.top=-900;

}

a[5]=0;

ev.flyObj=oo(flyObj);

ev.flyRun=flyRun;

}
obj=ev.flyObj;

if(a[4]==null){a[4]=1}

a[5]+=a[4]/Math.sqrt(Math.pow(a[2]-a[0],2)+Math.pow(a[3]-a[1],2));

if(a[5]>1){

obj.style.top=-900;

eval(ev.flyRun);

ev.flyObj=null;

return;

}
window.clearTimeout(ev.flyTm);

x=(a[2]-a[0])*a[5]+a[0];

y=(a[3]-a[1])*a[5]+a[1];

obj.style.left=x;

obj.style.top=y;

document.body.style.overflowX="hidden";

ev.flyTm=window.setTimeout("fly()",10)

}
function addAddress()

{

var key=ev.AddInfo;

if (oo(inceptDiv).value.indexOf(key)==-1)

{

oo(inceptDiv).value+=key+",";

}

}

</script>

</head>

<body>

<div id="content">

  <div id="sendmail">

    <input name="textfield" type="text" id="SendAddress" size="70">

  </div>

  <div id="friendlist">

    <div id="tbAddrTree">

      <ul>

        <li membername="张三" email="zhangsan@163.com"><nobr><a>张三</a></nobr></li>

        <li membername="李四" email="lisi@1126.com"><nobr><a>李四</a></nobr></li>

        <li membername="王五" email="wangwu@189.com"><nobr><a>王五</a></nobr></li>

      </ul>

    </div>

    <div id="bxAddrFly"> </div>

  </div>

</div>

<br />

</body>

</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
jQuery中$.fn的用法示例介绍
Nov 05 Javascript
禁止拷贝网页内容的js代码
Jan 22 Javascript
无刷新上传文件并返回自定义值
Jun 11 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
原生js实现轮播图
Feb 27 Javascript
javascript数组去重常用方法实例分析
Apr 11 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
JavaScript编写棋盘覆盖代码详解
Aug 28 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
浅谈JavaScript数据类型及转换
Feb 28 #Javascript
javaScript基础语法介绍
Feb 28 #Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 #Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
Feb 28 #Javascript
JavaScript生成随机数的4种自定义函数分享
Feb 28 #Javascript
浅析JavaScript事件和方法
Feb 28 #Javascript
常用的JavaScript WEB操作方法分享
Feb 28 #Javascript
You might like
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
javascript 三种编解码方式
2010/02/01 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
python3生成随机数实例
2014/10/20 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
python字符串反转的四种方法详解
2019/12/02 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
中专毕业自我鉴定
2013/10/16 职场文书
优秀食品类广告词
2014/03/19 职场文书
白莲教口号
2014/06/18 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
2014年居委会工作总结
2014/12/09 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
地球上的星星观后感
2015/06/02 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android