仿新浪微博登陆邮箱提示效果的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 相关文章推荐
JQuery 获得绝对,相对位置的坐标方法
Feb 09 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
简单谈谈javascript中this的隐式绑定
Feb 22 Javascript
JavaScript Promise 用法
Jun 14 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
BootStrap的table表头固定tbody滚动的实例代码
Aug 24 Javascript
BootStrap树状图显示功能
Nov 24 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
JavaScript引用类型Date常见用法实例分析
Aug 08 Javascript
Vue实现本地购物车功能
Dec 05 Javascript
JavaScript实现alert弹框效果
Nov 19 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 adodb连接mssql解决乱码问题
2009/06/12 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
跟我学Laravel之安装Laravel
2014/10/15 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
对dataframe进行列相加,行相加的实例
2018/06/08 Python
浅析python的Lambda表达式
2019/02/27 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
上级检查欢迎词
2014/01/18 职场文书
自荐信写法介绍
2014/01/25 职场文书
客户接待方案
2014/02/26 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
校园安全广播稿范文
2014/09/25 职场文书
Python中super().__init__()测试以及理解
2021/12/06 Python