html邮箱下拉栏,jQuery实现邮箱下拉列表自动补全功能

本文介绍了如何利用jQuery实现邮箱输入时的下拉列表自动补全功能。通过监听键盘事件和鼠标交互,实现实时显示、高亮选中、隐藏列表等操作,为用户提供便捷的输入体验。此外,还提到了可以使用autocomplete插件以获得更丰富的功能。
摘要由CSDN通过智能技术生成

记得,在上个项目中,遇到这样一个需求,网站要求填写邮箱的时候,还没有填写完,就会出现一系列下拉列表,帮助自动补全邮箱的功能。今天小编给给大家分享下我基于jquery是怎么实现此功能的!

功能简述

•填写邮箱名字,出现下拉列表,自动补全邮箱

•点击上下按键,选取下拉列表邮箱

•按回车键,选中列表内容,隐藏下拉列表

•鼠标经过,下拉列表选项设置为高亮

•鼠标点击,选中下拉列表选项,隐藏下拉列表

HTML

HTML代码很简单,我们就一个简单的输入框,然后一个ul标签,在内部可以放好多li标签。

以上便是HTML代码

CSS

在CSS中,定义也比较简单,其中有一个 lilight 的 class,可以使背景变色,通过 remove 和 add 这个 class,我们可以轻松地实现下拉列表元素是否选中的区分。

CSS所有样式如下

.content input{

padding:5px 10px;

width:200px;

}

ul.list{

list-style:none;

padding:0px;

margin:0px;

overflow:hidden;

}

ul.list li{

border:1px solid #EEE;

width:180px;

padding:5px 10px;

margin:0px;

text-overflow:ellipsis; //溢出时变为省略

overflow:hidden;

}

.lilight{

background-color:#fafafa;

}

JS

我们引入 jQuery 来实现对元素的操作,实现了按键和鼠标监听,代码如下

$(function(){

//声明所有的电子邮件变量

var mail=new Array("sina.com.cn","126.com","163.com","gmail.com","qq.com","vip.qq.com","hotmail.com","sohu.com","139.com","vip.sina.com","cuiqingcai.com");

//生成一个个li,并加入到ul中

for(var i=0;i

var liElement=$("

@ "+mail[i]+"");

liElement.appendTo("ul.list");

}

//首先让list隐藏起来

$("ul.list").hide();

$("#email").keyup(function(event){

//键入的内容不是上下箭头和回车

if(event.keyCode!=38&&event.keyCode!=40&&event.keyCode!=13){

//如果输入的值不是空或者不以空格开头

if($.trim($(this).val())!=""&& $.trim($(this).val()).match(/^@/)==null){

$("ul.list").show();

//如果当前有已经高亮的下拉选项卡,那么将其移除

if($("ul.list li:visible").hasClass("lilight")){

$("ul.list li").removeClass("lilight");

}

//如果还存在下拉选项卡,那么将其高亮

if($("ul.list li:visible")){

$("ul.list li:visible:eq(0)").addClass("lilight");

}

}else{

//否则不进行显示

$("ul.list").hide();

$("ul.list li").removeClass("lilight");

}

//输入的内容还没有包括@符号

if($.trim($(this).val()).match(/.*@/)==null){

$(".list li .ex").text($(this).val());

}else{

//输入的符号已经包含了@

var str = $(this).val();

var strs = str.split("@");

$(".list li .ex").text(strs[0]);

if($(this).val().length>=strs[0].length+1){

tail=str.substr(strs[0].length+1);

$(".list li .tail").each(function(){

//如果数组中的元素是以文本中的后缀开头,那么就显示,否则不显示

if(!($(this).text().match(tail)!=null&&$(this).text().indexOf(tail)==0)){

//隐藏其他的li

$(this).parent().hide();

}else{

//显示所在的li

$(this).parent().show();

}

});

}

}

}

//按了回车时,将当前选中的元素写入到文本框中

if(event.keyCode==13){

$("#email").val($("ul.list li.lilight:visible").text());

$("ul.list").hide();

}

});

//监听上下方向键

$("#email").keydown(function(event){

//下方向键按下了

if(event.keyCode==40){

if($("ul.list li").is(".lilight")){

if($("ul.list li.lilight").nextAll().is("li:visible")){

$("ul.list li.lilight").removeClass("lilight").next("li").addClass("lilight");

}

}

}

//下方向键按下了

if(event.keyCode==38){

if($("ul.list li").is(".lilight")){

if($("ul.list li.lilight").prevAll().is("li:visible")){

$("ul.list li.lilight").removeClass("lilight").prev("li").addClass("lilight");

}

}

}

});

//当鼠标点击某个下拉项时,选中该项,下拉列表隐藏

$("ul.list li").click(function(){

$("#email").val($(this).text());

$("ul.list").hide();

});

//当鼠标划过某个下拉项时,选中该项,下拉列表隐藏

$("ul.list li").hover(function(){

$("ul.list li").removeClass("lilight");

$(this).addClass("lilight");

});

//当鼠标点击其他位置,下拉列表隐藏

$(document).click(function(){

$("ul.list").hide();

});

});

总结

其实还有一个比较强大的插件,叫autocomplete,同样可以实现下拉列表的自动补全,功能更加完善,如果大家有兴趣可以去试一下。不过感觉最常用的就是邮箱自动补齐,而且直接用 jQuery 就可以比较方便地实现,所以博主就没有使用autocomplete插件,而是自己写了一下,一来练习一下,二来对这种功能的实现了解得更加透彻。

以上所述是小编给大家介绍的jQuery实现邮箱下拉列表自动补全功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在输入邮箱时可以智能提示 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery输入框邮箱下拉提示层 - </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> <script type="text/javascript" src="jquery-1.4.4.min.js"></script> <script type="text/javascript" src="inputmail.js"></script> </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="@hotmail.com"></li> <li email="@126.com"></li> <li email="@gmail.com"></li> <li email="@yahoo.com"></li> </ul> </div> </div> </div> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值