仿新浪微博登陆邮箱提示效果的js代码


Posted in Javascript onAugust 02, 2013
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>无标题文档</title> 
<script type="text/javascript" src="http://s.juzheke.com/min/f=@public/js/jquery.v1.7.js"></script> 
<script type="text/javascript"> 
$(function(){ 
$.fn.extend({ 
"changeTips":function(value){ 
value = $.extend({ 
divTip:"" 
},value) var $this = $(this); 
var indexLi = 0; 
//点击document隐藏下拉层 
$(document).click(function(event){ 
if($(event.target).attr("class") == value.divTip || $(event.target).is("li")){ 
var liVal = $(event.target).text(); 
$this.val(liVal); 
blus(); 
}else{ 
blus(); 
} 
}) 
//隐藏下拉层 
function blus(){ 
$(value.divTip).hide(); 
} 
//键盘上下执行的函数 
function keychang(up){ 
if(up == "up"){ 
if(indexLi == 1){ 
indexLi = $(value.divTip).children().length-1; 
}else{ 
indexLi--; 
} 
}else{ 
if(indexLi == $(value.divTip).children().length-1){ 
indexLi = 1; 
}else{ 
indexLi++; 
} 
} 
$(value.divTip).children().eq(indexLi).addClass("active").siblings().removeClass(); 
} 
//值发生改变时 
function valChange(){ 
var tex = $this.val();//输入框的值 
var fronts = "";//存放含有“@”之前的字符串 
var af = /@/; 
var regMail = new RegExp(tex.substring(tex.indexOf("@")));//有“@”之后的字符串,注意正则字面量方法,是不能用变量的。所以这里用的是new方式。 

//让提示层显示,并对里面的LI遍历 
if($this.val()==""){ 
blus(); 
}else{ 
$(value.divTip). 
show(). 
children(). 
each(function(index) { 
var valAttr = $(this).attr("email"); 
if(index==1){$(this).text(tex).addClass("active").siblings().removeClass();} 
//索引值大于1的LI元素进处处理 
if(index>1){ 
//当输入的值有“@”的时候 
if(af.test(tex)){ 
//如果含有“@”就截取输入框这个符号之前的字符串 
fronts = tex.substring(tex.indexOf("@"),0); 
$(this).text(fronts+valAttr); 
//判断输入的值“@”之后的值,是否含有和LI的email属性 
if(regMail.test($(this).attr("email"))){ 
$(this).show(); 
}else{ 
if(index>1){ 
$(this).hide(); 
} 
} 
} 
//当输入的值没有“@”的时候 
else{ 
$(this).text(tex+valAttr); 
} 
} 
}) 
} 
} 

//输入框值发生改变的时候执行函数,这里的事件用判断处理浏览器兼容性; 
if($.browser.msie){ 
$(this).bind("propertychange",function(){ 
valChange(); 
}) 
}else{ 
$(this).bind("input",function(){ 
valChange(); 
}) 
} 

//鼠标点击和悬停LI 
$(value.divTip).children(). 
hover(function(){ 
indexLi = $(this).index();//获取当前鼠标悬停时的LI索引值; 
if($(this).index()!=0){ 
$(this).addClass("active").siblings().removeClass(); 
} 
}) 

//按键盘的上下移动LI的背景色 
$this.keydown(function(event){ 
if(event.which == 38){//向上 
keychang("up") 
}else if(event.which == 40){//向下 
keychang() 
}else if(event.which == 13){ //回车 
var liVal = $(value.divTip).children().eq(indexLi).text(); 
$this.val(liVal); 
blus(); 
} 
}) 
} 
}) 

$("#loginName").changeTips({ 
divTip:".on_changes" 
}); 
}) 
</script> 
<style type="text/css"> 
*{margin:0;padding:0;} 
.login{width:400px; margin:0 auto; background:#EBEBEB; position:relative;} 
input{ width:230px; height:28px; margin:10px 0; line-height:28px;} 
.login .on_changes{width:232px; position:absolute; top:40px; list-style:none; background:#FFF; border:1px solid #000; display:none; padding:10px;} 
.login .on_changes li{margin:8px;padding:4px;} 
.login .on_changes li.active{ background:#CEE7FF;} 
</style> 
</head> 
<body> 
<div class="login"> 
<div class="ln"><input type="text" maxlength="128" name="loginName" id="loginName" placeholder="邮箱/会员帐号/手机号" /></div> 
<ul class="on_changes"> 
<li email="">请选择邮箱类型</li> 
<li email=""></li> 
<li email="@sina.com"></li> 
<li email="@163.com"></li> 
<li email="@qq.com"></li> 
<li email="@hotmail.com"></li> 
<li email="@126.com"></li> 
<li email="@gmail.com"></li> 
<li email="@yahoo.com"></li> 
</ul> 
</div> 
</body> 
</html>
Javascript 相关文章推荐
JS写的数字拼图小游戏代码[学习参考]
Oct 29 Javascript
用js实现的自定义的对话框的实现代码
Mar 21 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
jquery实现用户信息修改验证输入方法汇总
Jul 18 Javascript
js clearInterval()方法的定义和用法
Nov 11 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 Javascript
jQuery右下角悬浮广告实例
Oct 17 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
es5 类与es6中class的区别小结
Nov 09 Javascript
页面右下角弹出提示框示例代码js版
Aug 02 #Javascript
js获取IP和PcName(IE)在vs中可用
Aug 02 #Javascript
js获取location.href的参数实例代码
Aug 02 #Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 #Javascript
把jquery 的dialog和ztree结合实现步骤
Aug 02 #Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 #Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
Aug 02 #Javascript
You might like
基于php无限分类的深入理解
2013/06/02 PHP
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
JS原型对象通俗&quot;唱法&quot;
2012/12/27 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
python实现websocket的客户端压力测试
2019/06/25 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
python爬取抖音视频的实例分析
2021/01/19 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
大学生素质拓展活动方案
2014/02/11 职场文书
个人简历中自我评价
2014/02/11 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
2015年保管员工作总结
2015/04/30 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
我是特种兵观后感
2015/06/11 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
详解Vue router路由
2021/11/20 Vue.js
Python内置数据类型中的集合详解
2022/03/18 Python
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
服务器nginx权限被拒绝解决案例
2022/09/23 Servers