仿新浪微博登陆邮箱提示效果的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 15 Javascript
js简单实现删除记录时的提示效果
Dec 05 Javascript
jquery禁用右键示例
Apr 28 Javascript
JavaScript中的标签语句用法分析
Feb 10 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
原生javascript实现分页效果
Apr 21 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
详解Vue This$Store总结
Dec 17 Javascript
google广告之另类js调用实现代码
Aug 22 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP生成HTML静态页面实例代码
2008/08/31 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
js实现交通灯效果
2017/01/13 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
Python 正则表达式操作指南
2009/05/04 Python
详解使用Python处理文件目录的相关方法
2015/10/16 Python
总结Python编程中函数的使用要点
2016/03/20 Python
python之django母板页面的使用
2018/07/03 Python
django模板结构优化的方法
2019/02/28 Python
Python高级property属性用法实例分析
2019/11/19 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
电焊工岗位职责
2014/03/06 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
招标授权委托书样本
2014/09/23 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
先进典型发言材料
2014/12/30 职场文书
求职自我评价怎么写
2015/03/09 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android