基于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 相关文章推荐
window.onbeforeunload方法在IE下无法正常工作的解决办法
Jan 23 Javascript
表单JS弹出填写提示效果代码
Apr 16 Javascript
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
Apr 26 Javascript
js实现内容显示并使用json传输数据
Mar 16 Javascript
浅谈JavaScript的计时器对象
Dec 26 Javascript
angularjs使用directive实现分页组件的示例
Feb 07 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
js常用正则表达式集锦
May 17 Javascript
JavaScript中的this基本问题实例小结
Mar 09 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
mysql_escape_string()函数用法分析
2016/04/25 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
解密效果
2006/06/23 Javascript
用一段js程序来实现动画功能
2007/03/06 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
Python中单、双下划线的区别总结
2017/12/01 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
酒店管理自荐信
2013/10/23 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
党员创先争优承诺书
2014/03/26 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
公务员政审个人总结
2015/02/12 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
Python机器学习之逻辑回归
2021/05/11 Python
Python+tkinter实现高清图片保存
2022/03/13 Python