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 相关文章推荐
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
微信WeixinJSBridge API使用实例
May 25 Javascript
javascript实现的闭包简单实例
Jul 17 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
Mar 21 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
Aug 19 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
May 12 Javascript
详解JS数组方法
Nov 20 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
input file获得文件根目录简单实现
2013/04/26 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
javascript一点特殊用法
2008/05/28 Javascript
javascript 单选框,多选框美化代码
2008/08/01 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
python 除法保留两位小数点的方法
2018/07/16 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
岗位职责风险防控
2014/02/18 职场文书
幼儿教师求职信
2014/05/24 职场文书
文明单位汇报材料
2014/12/24 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技