仿新浪微博登陆邮箱提示效果的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的淡入淡出可自动切换的幻灯插件
Aug 24 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
Sep 12 Javascript
一个JavaScript函数把URL参数解析成Json对象
Sep 24 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
Aug 02 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
Vue项目自动转换 px 为 rem的实现方法
Oct 29 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
关于Vue中$refs的探索浅析
Nov 05 Javascript
vue+Element-ui前端实现分页效果
Nov 15 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
一个SQL管理员的web接口
2006/10/09 PHP
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
Fleaphp常见函数功能与用法示例
2016/11/15 PHP
Javascript 面试题随笔
2011/03/31 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
python的keyword模块用法实例分析
2015/06/30 Python
Python操作csv文件实例详解
2017/07/31 Python
使用python实现knn算法
2017/12/20 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
Python流程控制 while循环实现解析
2019/09/02 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Django media static外部访问Django中的图片设置教程
2020/04/07 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
经典c++面试题二
2015/08/14 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
数学专业推荐信范文
2013/11/21 职场文书
销售会计岗位职责
2014/03/15 职场文书
团代会闭幕词
2015/01/28 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
高三化学教学反思
2016/02/22 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
MySQL Server 层四个日志
2022/03/31 MySQL