仿新浪微博登陆邮箱提示效果的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 相关文章推荐
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
读jQuery之三(构建选择器)
Jun 11 Javascript
详解Vue 开发模式下跨域问题
Jun 06 Javascript
AngularJS 最常用的八种功能(基础知识)
Jun 26 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
Angular实现预加载延迟模块的示例
Oct 12 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
原生JS实现的碰撞检测功能示例
May 18 Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 Javascript
vue 属性拦截实现双向绑定的实例代码
Oct 24 Javascript
详解JavaScript 浮点数运算的精度问题
Jul 23 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实现redis数据库指定库号迁移的方法
2015/01/14 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
php实现的mongodb操作类
2015/05/28 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
JavaScript打字小游戏代码
2011/12/26 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
进一步理解Python中的函数编程
2015/04/13 Python
星球大战与Python之间的那些事
2016/01/07 Python
python中input()与raw_input()的区别分析
2016/02/27 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
自动化专业个人求职信范文
2013/12/30 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL