JS实现在输入框内输入@时,邮箱账号自动补全
更新:HHH   时间:2023-1-7


<!DOCTYPE HTML>

<html lang="en">

<head>

<meta charset="utf-8"/>

<title>邮箱自动补全</title>

<style type="text/css">

.wrap{width:200px;margin:0 auto;}

h2{font-size:36px;text-align:center;line-height:60px;}

p{font-size:20px;text-align:center;line-height:60px;}

.inp{width:190px;border:1px solid #ccc;border-radius:5px;height:30px;line-height:30px;padding:5px;}


#AutoComplete{background:#fff;border:1px solid #4190db;display:none;width:200px;}

#AutoComplete ul{list-style-type:none;margin:0;padding:0;}

#AutoComplete li{color:#333;cursor:pointer;font:12px/22px \5b8b\4f53;text-indent:5px;}

#AutoComplete .hover{background:#6eb6fe;color:#fff;}

</style>

</head>

<body>

<h2>邮箱自动补全 + 上下翻动</h2>

<p>当在输入框内输入 @ 时,自动显示各个邮箱的下拉列表。</p>

<div class="wrap">

<form action="result.php" method="post">

<input type="text" name="email" id="email" class="inp" autocomplete="off"/><br/><br/>

<input type="text" name="other" class="inp" autocomplete="off"/><br/><br/>

<input type="submit" value="提交表单" id="submit"/>

</form>

</div>


<script type="text/javascript" src="jquery.min.js"></script>


<script type="text/javascript">


jQuery.AutoComplete = function(selector){

var elt = $(selector);

var autoComplete,autoLi;

var strHtml = [];

strHtml.push('<div class="AutoComplete" id="AutoComplete">');

strHtml.push(' <ul class="AutoComplete_ul">');

strHtml.push(' <li class="AutoComplete_title">请选择邮箱后缀</li>');

strHtml.push(' <li hz="@qq.com"></li>');

strHtml.push(' <li hz="@163.com"></li>');

strHtml.push(' <li hz="@126.com"></li>');

strHtml.push(' <li hz="@sohu.com"></li>');

strHtml.push(' <li hz="@sina.com"></li>');

strHtml.push(' </ul>');

strHtml.push('</div>');

$('body').append(strHtml.join(''));

autoComplete = $('#AutoComplete');

autoComplete.data('elt',elt);

autoLi = autoComplete.find('li:not(.AutoComplete_title)');

autoLi.mouseover(function(){

$(this).siblings().filter('.hover').removeClass('hover');

$(this).addClass('hover');

}).mouseout(function(){

$(this).removeClass('hover');

}).mousedown(function(){

autoComplete.data('elt').val($(this).text()).change();

autoComplete.hide();

});

//用户名补全+翻动

elt.keyup(function(e){

if(/13|38|40|116/.test(e.keyCode) || this.value == ''){

return false;

}

var username = this.value;

if(username.indexOf('@') == -1){

autoComplete.hide();

return false;

}

autoLi.each(function(){

this.innerHTML = username.replace(/\@+.*/,'') + $(this).attr('hz');

if(this.innerHTML.indexOf(username) >= 0){

$(this).show();

}else{

$(this).hide();

}

}).filter('.hover').removeClass('hover');

autoComplete.show().css({

left: $(this).offset().left,

top: $(this).offset().top + $(this).outerHeight(true) - 1,

position: 'absolute',

zIndex: '99999'

});

if(autoLi.filter(':visible').length == 0){

autoComplete.hide();

}else{

autoLi.filter(':visible').eq(0).addClass('hover');

}

}).keydown(function(e){

if(e.keyCode == 38){ //上

autoLi.filter('.hover').prev().not('.AutoComplete_title').addClass('hover').next().removeClass('hover');

}else if(e.keyCode == 40){ //下

autoLi.filter('.hover').next().addClass('hover').prev().removeClass('hover');

}else if(e.keyCode == 13){ //Enter

autoLi.filter('.hover').mousedown();

e.preventDefault(); //如有表单,阻止表单提交

}

}).focus(function(){

autoComplete.data('elt',$(this));

}).blur(function(){

autoComplete.hide();

});

}



$(function(){

$.AutoComplete('#email');

});

</script>

</body>

</html>


返回开发技术教程...