基于javascript实现仿百度输入框自动匹配功能


Posted in Javascript onJanuary 03, 2016

本文实例讲解了基于javascript实现仿百度输入框自动匹配功能的详细代码,现在很多网站都有这种效果,在文本框输入一个字符,下边会出来相匹配的内容,这个代码就演示了这个功能是如何完成的,当然,这是个静态的,你可以将提示的内容从数据库读取出来,要用到AJAX那东东,分享给大家供大家参考,具体内容如下

<HTML> 
<HEAD> 
<title>带输入匹配的文本框</title> 
<style> 
body,div { 
font-family:verdana; 
line-height:100%; 
font-size:10pt; 
} 
input { 
width:320px; 
} 
h1 { 
text-align:center; 
font-size:2.2em; 
} 
#divc { 
border:1px solid #555; 
} 
.des { 
width:500px; 
background-color:lightyellow; 
border:1px solid #555; 
padding:25px; 
margin-top:25px; 
} 
.mouseover { 
color:#ffffff; 
background-color:highlight; 
width:100%; 
cursor:default; 
} 
.mouseout { 
color:#000; 
width:100%; 
background-color:#ffffff; 
cursor:default; 
} 
</style> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
function jsAuto(instanceName,objID) 
{ 
this._msg = []; 
this._x = null; 
this._o = document.getElementById( objID ); 
if (!this._o) return; 
this._f = null; 
this._i = instanceName; 
this._r = null; 
this._c = 0; 
this._s = false; 
this._v = null; 
this._o.style.visibility = "hidden"; 
this._o.style.position = "absolute"; 
this._o.style.zIndex = "9999"; 
this._o.style.overflow = "auto"; 
this._o.style.height = "50"; 
return this; 
};

jsAuto.prototype.directionKey=function() { with (this)
{
var e = _e.keyCode ? _e.keyCode : _e.which;
var l = _o.childNodes.length;
(_c>l-1 || _c<0) ? _s=false : "";

if( e==40 && _s )
{
_o.childNodes[_c].className="mouseout";
(_c >= l-1) ? _c=0 : _c ++;
_o.childNodes[_c].className="mouseover";
}
if( e==38 && _s )
{
_o.childNodes[_c].className="mouseout";
_c--<=0 ? _c = _o.childNodes.length-1 : "";
_o.childNodes[_c].className="mouseover";
}
if( e==13 )
{
if(_o.childNodes[_c] && _o.style.visibility=="visible")
{
_r.value = _x[_c];
_o.style.visibility = "hidden";
}
}
if( !_s )
{
_c = 0;
_o.childNodes[_c].className="mouseover";
_s = true;
}
}};

// mouseEvent.
jsAuto.prototype.domouseover=function(obj) { with (this)
{
_o.childNodes[_c].className = "mouseout";
_c = 0;
obj.tagName=="DIV" ? obj.className="mouseover" : obj.parentElement.className="mouseover";
}};
jsAuto.prototype.domouseout=function(obj)
{
obj.tagName=="DIV" ? obj.className="mouseout" : obj.parentElement.className="mouseout";
};
jsAuto.prototype.doclick=function(msg) { with (this)
{
if(_r)
{
_r.value = msg;
_o.style.visibility = "hidden";
}
else
{
alert("javascript autocomplete ERROR :\n\n can not get return object.");
return;
}
}};

// object method;
jsAuto.prototype.item=function(msg)
{
if( msg.indexOf(",")>0 )
{
var arrMsg=msg.split(",");
for(var i=0; i<arrMsg.length; i++)
{
arrMsg[i] ? this._msg.push(arrMsg[i]) : "";
}
}
else
{
this._msg.push(msg);
}
this._msg.sort();
};
jsAuto.prototype.append=function(msg) { with (this)
{
_i ? "" : _i = eval(_i);
_x.push(msg);
var div = document.createElement("DIV");
//bind event to object.
div.onmouseover = function(){_i.domouseover(this)};
div.onmouseout = function(){_i.domouseout(this)};
div.onclick = function(){_i.doclick(msg)};
var re = new RegExp("(" + _v + ")","i");
div.style.lineHeight="140%";
div.className = "mouseout";
if (_v) div.innerHTML = msg.replace(re , "<strong>$1</strong>");
div.style.fontFamily = "verdana";

_o.appendChild(div);
}};
jsAuto.prototype.display=function() { with(this)
{
if(_f && _v!="")
{
_o.style.left = _r.offsetLeft;
_o.style.width = _r.offsetWidth;
_o.style.top = _r.offsetTop + _r.offsetHeight;
_o.style.visibility = "visible";
}
else
{
_o.style.visibility="hidden";
}
}};
jsAuto.prototype.handleEvent=function(fValue,fID,event) { with (this)
{
var re;
_e = event;
var e = _e.keyCode ? _e.keyCode : _e.which;
_x = [];
_f = false;
_r = document.getElementById( fID );
_v = fValue;
_i = eval(_i);
re = new RegExp("^" + fValue + "", "i");
_o.innerHTML="";

for(var i=0; i<_msg.length; i++)
{
if(re.test(_msg[i]))
{
_i.append(_msg[i]);
_f = true;
}
}

_i ? _i.display() : alert("can not get instance");

if(_f)
{
if((e==38 || e==40 || e==13))
{
_i.directionKey();
}
else
{
_c=0;
_o.childNodes[_c].className = "mouseover";
_s=true;
}
}
}};
window.onerror=new Function("return true;");
//-->
</SCRIPT>
</HEAD>

<BODY>
<div id="divc">
<!--this is the autocomplete container.-->
</div>
<div align="center">
<input onkeyup="jsAutoInstance.handleEvent(this.value,'auto',event)" id="auto">
</div>

<SCRIPT LANGUAGE="JavaScript">
<!--
var jsAutoInstance = new jsAuto("jsAutoInstance","divc");
jsAutoInstance.item("a-start,b-start,c-start,d-start,e-start,f-start,g-start,h-start,i-start,j-start,k-start,l-start,m-start,n-start,o-start,p-start,q-start,r-start,s-start,t-start,u-start,v-start,w-start,x-start,y-start,z-start,z-start,a-start,b-start,c-start,d-start,e-start,f-start,g-start,h-start,i-start,j-start,k-start,l-start,m-start,n-start,o-start,p-start,q-start,r-start,s-start,t-start,u-start,v-start,w-start,x-start,y-start,z-start,u-start,v-start,w-start,x-start,y-start,z-start,z-start,a-start,b-start,c-start,y-start,z-start,z-start,a-start,b-start,c-start,d-start,e-start,f-start,g-start,h-start,i-start,s-start,w-start,x-start,y-start,z-start,z-start,a-start,b-start,c-start,d-start,e-start,f-start,g-start,h-start,i-start,a-start,b-start,c-start,d-start,e-start,z-start,z-start");
jsAutoInstance.item("blueDestiny");
jsAutoInstance.item("BlueMiracle,Blue");
jsAutoInstance.item("angela,geniuslau");
jsAutoInstance.item("never-online");
//-->
</SCRIPT>
<center>请在输入框输入一个字母:</center>
</BODY>
</HTML>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
类似框架的js代码
Nov 09 Javascript
jquery异步请求实例代码
Jun 21 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
PHP PDO操作总结
Nov 17 Javascript
javascript实现模拟时钟的方法
May 13 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
JS实现自定义状态栏动画文字效果示例
Oct 12 Javascript
自定义javascript验证框架示例【附源码下载】
May 31 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 Javascript
js实现搜索框关键字智能匹配代码
Mar 26 #Javascript
javascript合并表格单元格实例代码
Jan 03 #Javascript
JS Array.slice 截取数组的实现方法
Jan 02 #Javascript
jquery实现简单的全选和反选功能
Jan 02 #Javascript
基于Javascript实现弹出页面效果
Jan 01 #Javascript
基于jQuery实现点击弹出层实例代码
Jan 01 #Javascript
基于jQuery实现返回顶部实例代码
Jan 01 #Javascript
You might like
笑谈配置,使用Smarty技术
2007/01/04 PHP
php escape URL编码
2008/12/10 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
php判断访问IP的方法
2015/06/19 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
Python修改MP3文件的方法
2015/06/15 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
Python自动化操作实现图例绘制
2020/07/09 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
入学生会自荐书范文
2014/02/05 职场文书
竞选部长演讲稿
2014/04/26 职场文书
个人整改措施书面材料
2014/10/24 职场文书
元旦晚会开场白
2015/05/29 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers