文本框输入提示/自动完成功能

<!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>

时间: 2024-10-03 14:46:09

文本框输入提示/自动完成功能的相关文章

转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果

是否可以借助于zTree实现文本框输入关键词自动模糊匹配zTree下拉树,然后选择下拉树内节点显示在文本框内且隐藏下拉树. 看到这个需求脑子里头大致已经想到了要如何实现这样一个需求,当时是限于时间问题所以没有动手处理.今天闲来无事琢磨了一下这个需求.我的解决思路如下所示: 1.监听文本框的onkeyup事件:实时传递其值到某个函数: 2.编写某个函数接收文本框的值通过zTree的模糊查找方法getNodesByParamFuzzy(key,value)获得: 3.将匹配到的节点列表结合重新赋值给

Jquery实现文本框输入提示

一些用户体验好的表单都会在文本框里设置输入提示,文本框获取焦点时,提示内容消息,如果未输入,失去焦点时又会出现提示. 网上找到一个比较好用的控件jquery.inputDefault.js 使用方法: 1.在jsp页面引用jquery.inputDefault.js <script src="/js/jquery.inputDefault.js" type="text/javascript"></script> 2.需要为控件增加一个自定义属

文本框输入邮箱自动联想补全

<!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title></title&g

简单的文本框输入自动提示

简单的文本框输入自动提示--输入的时候可以直接异步加载数据库中匹配的项,然后显示出来. 这里没有使用到数据库,直接在PHP用数组模拟数据存储.  demo演示 原理主要是: 监听输入框的状态,当有改变的时候即刻通过ajax发送数据并取得返回值. 主要使用了jQuery封装很方便,但貌似我这个兼容性不咋地...主要提供个思路吧~ js部分: <script type="text/javascript" src="./js/jquery.min.js">&l

jQuery实现TEXT文本框输入时的提示信息(谷歌百度淘宝搜索框提示实现)

在搜索框中,输入之前框内有输入的提示信息,文本框获得焦点后会自动消失的效果,效果图如下: 鼠标放在文本框时的效果: 创建工具类(已经存在就不用创建了)Util.js(DWR的JS) 在里面添加如下方法: Js代码 /** * Input框里的灰色提示,使用前先引入jquery * <br>使用方法:<input type="text" tipMsg="您的用户名"   /> * * @return */ function inputTipTe

实现文本框输入内容提示代码实例

实现文本框输入内容提示代码实例:比较人性化的网站一般都是比较讲究细节的,比如文本框输入内容具有提示效果,在默认情况下,文本框有提示文本,当鼠标放入文本框输入文本的时候,提示文本会消失,下面就通过代码实例介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="ht

输入文本框【提示文字】的设置与清空

<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>输入文本框提示文字的清空</title> <script src="Jquery/jquery-1.10.2.js" type="text/javascript"></script> <script type="text/ja

input文本框录入字母自动大写

向文本框输入文字时,如何让小写字母自动变为大写呢?有一个简单有效的做法是用CSS. <input name="t1" type="text" style="text-transform:uppercase;" /> text-transform 有四个可选:none 默认值.无转换发生 capitalize 将每个单词的第一个字母转换成大写,其余无转换发生 uppercase 转换成大写 lowercase 转换成小写

监听文本框输入开发仿新浪微博限制输入字数的textarea插件

监听文本框输入 Firefox.Chrome.IE9,IE10 均支持 oninput 事件,此外所有版本的 IE 均支持 onpropertychange 事件. oninput 事件在用户输入.退格(backspace).删除(delete).剪切(ctrl + x).粘贴(ctrl + v)及鼠标剪切与粘贴时触发(在 IE9 中只在输入.粘贴.鼠标粘贴时触发). onpropertychange 事件在用户输入.退格(backspace).删除(delete).剪切(ctrl + x).粘