1。jQuery代码
(function($){
$.fn.extend({
"changeTips":function(value){
value= $.extend({divTip:""},value)
var $this = $(this);
var indexLi = 0;
$(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("@")));
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();
}
if(index>1){
if(af.test(tex)){
fronts= tex.substring(tex.indexOf("@"),0);
$(this).text(fronts+valAttr);
if(regMail.test($(this).attr("email"))){
$(this).show();
}else{
if(index>1){
$(this).hide();
}
}
}
else{
$(this).text(tex+valAttr);
}
}
})
}
}
if(window.ActiveXObject || "ActiveXObject" in window){
$(this).bind("propertychange",function(){
valChange();
})
}else{
$(this).bind("input",function(){
valChange();
})
}
$(value.divTip).children().
hover(function(){
indexLi= $(this).index();
if(indexLi!=0){
$(this).addClass("active").siblings().removeClass();
}
})
$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();
}
})
}
})
})(jQuery)
2.html 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/jquery-3.2.1.js"></script>
<script type="text/javascript" src="js/emailTip2.js"></script>
<title>Title</title>
<style type="text/css">
*{ margin:0; padding:0;}
body { font:12px/1.8 Arial; color:#666;}
ul,li{ list-style:none;}
h1.tit-h1 { font-size:38px;text-align:center; margin:30px 0 15px; color:#f60;}
.go-back{ text-align:center; border-top:1px dashed #ccc; padding:10px; margin-top:20px; font-size:40px;}
.wrap{border:1px dashed #ccc;background:#f8f8f8; padding:20px;}
.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>
<h1 class="tit-h1">jquery输入框邮箱下拉提示层</h1>
<div class="wrap">
<script type="text/javascript">
$(function(){
$("#loginName").changeTips({
divTip:".on_changes"
});
})
</script>
<div class="login">
<div class="ln">
<input type="text" maxlength="128" name="loginName" id="loginName" placeholder="邮箱/会员帐号/手机号" />
</div>
<ul class="on_changes" style="position: absolute; left: 78px; top:42px">
<li email="">请选择邮箱类型</li>
<li email=""></li>
<li email="@sina.com"></li>
<li email="@163.com"></li>
<li email="@qq.com"></li>
<li email="@139.com"></li>
<li email="@hotmail.com"></li>
<li email="@126.com"></li>
<li email="@gmail.com"></li>
<li email="@yahoo.com"></li>
</ul>
</div>
</div>
</body>
3.界面截图