基于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 相关文章推荐
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
javascript使用call调用微信API
Dec 15 Javascript
javascript实现Table排序的方法
May 15 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
使用three.js 画渐变的直线
Jun 05 Javascript
prototype.js常用函数详解
Jun 18 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 Javascript
vue之将echart封装为组件
Jun 02 Javascript
推荐15个最好用的JavaScript代码压缩工具
Feb 13 Javascript
javascript实现评分功能
Jun 24 Javascript
JavaScript实现打字游戏
Feb 19 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
PHP SPL使用方法和他的威力
2013/11/12 PHP
php使用Cookie控制访问授权的方法
2015/01/21 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python MySQLdb Linux下安装笔记
2015/05/09 Python
windows下ipython的安装与使用详解
2016/10/20 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
SpringBoot首页设置解析(推荐)
2021/02/11 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
秋季运动会活动方案
2014/02/05 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
仓库管理计划书
2014/05/04 职场文书
工作作风建设心得体会
2014/10/22 职场文书
职代会闭幕词
2015/01/28 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书