代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
JS
】
文本框输入提示/自动完成功能
作者:
bacteroid
/ 发布于
2014/7/2
/
736
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>文本框输入提示/自动完成功能 </title> <meta http-equiv="content-type" content="text/html;charset=gb2312"> <script type="text/javascript"> function mSift_SeekTp(oObj,nDire){if(oObj.getBoundingClientRect&&!document.all){var oDc=document.documentElement;switch(nDire){case 0:return oObj.getBoundingClientRect().top+oDc.scrollTop;case 1:return oObj.getBoundingClientRect().right+oDc.scrollLeft;case 2:return oObj.getBoundingClientRect().bottom+oDc.scrollTop;case 3:return oObj.getBoundingClientRect().left+oDc.scrollLeft;}}else{if(nDire==1||nDire==3){var nPosition=oObj.offsetLeft;}else{var nPosition=oObj.offsetTop;}if(arguments[arguments.length-1]!=0){if(nDire==1){nPosition+=oObj.offsetWidth;}else if(nDire==2){nPosition+=oObj.offsetHeight;}}if(oObj.offsetParent!=null){nPosition+=mSift_SeekTp(oObj.offsetParent,nDire,0);}return nPosition;}} function mSift(cVarName,nMax){this.oo=cVarName;this.Max=nMax;} mSift.prototype={ Varsion:'v2010.10.29 by AngusYoung | mrxcool.com', Target:Object, TgList:Object, Listeners:null, SelIndex:0, Data:[], ReData:[], Create:function(oObj){ var _this=this; var oUL=document.createElement('ul'); oUL.style.display='none'; oObj.parentNode.insertBefore(oUL,oObj); _this.TgList=oUL; oObj.onkeydown=oObj.onclick=function(e){_this.Listen(this,e);}; oObj.onblur=function(){setTimeout(function(){_this.Clear();},100);}; }, Complete:function(){}, Select:function(){ var _this=this; if(_this.ReData.length>0){ _this.Target.value=_this.ReData[_this.SelIndex].replace(/\*/g,'*').replace(/\|/g,'|'); _this.Clear(); } setTimeout(function(){_this.Target.focus();},10); _this.Complete(); }, Listen:function(oObj){ var _this=this; _this.Target=oObj; var e=arguments[arguments.length-1]; var ev=window.event||e; switch(ev.keyCode){ case 9://TAB return; case 13://ENTER _this.Target.blur(); _this.Select(); return; case 38://UP _this.SelIndex=_this.SelIndex>0?_this.SelIndex-1:_this.ReData.length-1; break; case 40://DOWN _this.SelIndex=_this.SelIndex<_this.ReData.length-1?_this.SelIndex+1:0; break; default: _this.SelIndex=0; } if(_this.Listeners){clearInterval(_this.Listeners);} _this.Listeners=setInterval(function(){ _this.Get(); },10); }, Get:function(){ var _this=this; if(_this.Target.value==''){_this.Clear();return;} if(_this.Listeners){clearInterval(_this.Listeners);}; _this.ReData=[]; var cResult=''; for(var i=0;i<_this.Data.length;i++){ if(_this.Data[i].toLowerCase().indexOf(_this.Target.value.toLowerCase())>=0){ _this.ReData.push(_this.Data[i]); if(_this.ReData.length==_this.Max){break;} } } var cRegPattern=_this.Target.value.replace(/\*/g,'*'); cRegPattern=cRegPattern.replace(/\|/g,'|'); cRegPattern=cRegPattern.replace(/\+/g,'\\+'); cRegPattern=cRegPattern.replace(/\./g,'\\.'); cRegPattern=cRegPattern.replace(/\?/g,'\\?'); cRegPattern=cRegPattern.replace(/\^/g,'\\^'); cRegPattern=cRegPattern.replace(/\$/g,'\\$'); cRegPattern=cRegPattern.replace(/\(/g,'\\('); cRegPattern=cRegPattern.replace(/\)/g,'\\)'); cRegPattern=cRegPattern.replace(/\[/g,'\\['); cRegPattern=cRegPattern.replace(/\]/g,'\\]'); cRegPattern=cRegPattern.replace(/\\/g,'\\\\'); var cRegEx=new RegExp(cRegPattern,'i'); for(var i=0;i<_this.ReData.length;i++){ if(_this.Target.value.indexOf('*')>=0){ _this.ReData[i]=_this.ReData[i].replace(/\*/g,'*'); } if(_this.Target.value.indexOf('|')>=0){ _this.ReData[i]=_this.ReData[i].replace(/\|/g,'|'); } cResult+='<li style="padding:0 5px;line-height:20px;cursor:default;" onmouseover="'+ _this.oo+'.ChangeOn(this);'+_this.oo+'.SelIndex='+i+';" onmousedown="'+_this.oo+'.Select();">' +_this.ReData[i].replace(cRegEx,function(s){return '<span style="background:#ff9;font-weight:bold;font-style:normal;color:#e60;">'+s+'</span>';});+'</li>'; } if(cResult==''){_this.Clear();} else{ _this.TgList.innerHTML=cResult; _this.TgList.style.cssText='display:block;position:absolute;background:#fff;border:#090 solid 1px;margin:-1px 0 0;padding: 5px;list-style:none;font-size:12px;'; _this.TgList.style.top=mSift_SeekTp(_this.Target,2)+'px'; _this.TgList.style.left=mSift_SeekTp(_this.Target,3)+'px'; _this.TgList.style.width=_this.Target.offsetWidth-12+'px'; } var oLi=_this.TgList.getElementsByTagName('li'); if(oLi.length>0){ oLi[_this.SelIndex].style.cssText='background:#36c;padding:0 5px;line-height:20px;cursor:default;color:#fff;'; } }, ChangeOn:function(oObj){ var oLi=this.TgList.getElementsByTagName('li'); for(var i=0;i<oLi.length;i++) { oLi[i].style.cssText='padding:0 5px;line-height:20px;cursor:default;'; } oObj.style.cssText='background:#36c;padding:0 5px;line-height:20px;cursor:default;color:#fff;'; }, Clear:function(){ var _this=this; if(_this.TgList){ _this.TgList.style.display='none'; _this.ReData=[]; _this.SelIndex=0; } } } </script> </head> <body> 友情提示:文本框屏蔽了回车,因此回车键暂不可用。 <form name="salefrm" method="post" action="?action=add"> <input type="text" id="abc" value="J" size="40"> <input type="text" id="we" value="河" size="60"> </form> <script type="text/javascript"> //建立实例,第一个参数是实例对象的名称,第二个是最多显示的数量 var oo=new mSift('oo',20); //数据 oo.Data=['JavaScript特效','JS效果','Js代码','Java特效','Javascript代码','JS脚本','Js是什么意思','Java','Java游戏']; //指定文本框对象建立特效 oo.Create(document.getElementById('abc')); var oxo=new mSift('oxo',20); oxo.Data=['河北省','河南省','河源市','河套平原','河北承德']; oxo.Create(document.getElementById('we')); </script> </body> </html>
试试其它关键字
自动完成
同语言下
.
Jquery搜索框获取回车事件
.
H5页面添加倒计时,然后自动跳转
.
通过user-agent判断h5页面是在哪个手机App(QQ、微信
.
nginx 禁止未绑定的域名访问
.
JavaScript 获取按键,并屏蔽系统 Window 事件
.
H5之只允许微信浏览器打开,禁止从外部浏览器访问
.
微信打开网址添加在浏览器中打开提示的办法
.
实现JS复制、粘贴,Chrome/Firefox下可用
.
video视频播放,play()、pause()、duration时长、onen
.
HTML5实现MP3上传前的预览和播放时长的获取
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
bacteroid
贡献的其它代码
(
12
)
.
文本框输入提示/自动完成功能
.
在网页中用鼠标+ctrl复选表格或者直接反选
.
提交文章时弹出确认框
.
鼠标选中文字自动加入文本框中
.
使用JS按钮实现网页跳转功能
.
点击删除按钮弹出提示框代码
.
双击网页中的文字即可进行编辑
.
图片鼠标滑过变大
.
选择不同的按钮文本框自动出现不同的内容
.
输入框input鼠标点击自动加底色
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3