aspx中添加一个HTML文本框,asp.net 页面版文本框智能提示JSCode (升级版)

原本准备在上一篇中直接修改的,无奈编辑功能太差,打开一堆html代码,空格“&nbsp”都看的人眼花缭乱,只好另开一篇。

升级说明:添加了针对一个界面多个职能提示位置的设定,只需修改文本框οnfοcus="fnStartInterval(this,'DropDownList2')",

设置好相应的参数即可,同时修复了在IE6下div无法遮盖下拉列表的问题,(IE6下无论如何设置select的z-index或div的z-index属性均无济于事),关于这个就是利用了一个iframe,将其盖在div要显示的位置,然后div再放在iframe上方即可。即使下方有select元素,也没关系了。下面是最新code:

无标题页

#coverddl{

position:absolute;

z-index:2;

width:expression(this.nextSibling.offsetWidth);

height:expression(this.nextSibling.offsetHeight);

top:expression(this.nextSibling.offsetTop);

left:expression(this.nextSibling.offsetLeft);

}

-->

var currentIndex=-1;//保存提示框中选择的索引

var sumSearchCount=0;//保存提示框中数据数量

var tempValue="";//保存当前输入的要搜索的内容

var objTxt=null;//保存文本框对象

var top=0;//提示框的top

var left=0;//提示框的left

var width=0;//提示框的width

var values = null;//保存下拉列表的值

var texts = null;//保存下拉列表的显示内容

var tempDiv= null;//保存提示框中索引对应的values索引

var ddlName="";//获取到的下拉列表ID

var getDDLName = "";//服务器端下拉列表ID

var fontSize=12;//智能提示内容字体

var paddingBottom = 2;//智能提示内容下边缘大小

var backGroundColor = "#3366CC";//智能提示内容背景色

//获取下拉列表ID

function GetDDLID()

{

var ddls = document.getElementsByTagName("select");

for(var i=0;i

{

if(ddls[i].id.indexOf(getDDLName)!=-1)

{

ddlName=ddls[i].id;

break;

}

}

}

//获取下拉列表的值和显示内容

function getSelectValues(){

GetDDLID();

values = new Array();

texts = new Array();

tempDiv=new Array();

ddlvalue = document.getElementById(ddlName);

for(var i=0;i

values[i]=ddlvalue.options[i].value;

texts[i]=ddlvalue.options[i].text;

}

}

var oInterval = "";//保存自动计时对象

function fnStartInterval(txt_id,ddlOldName){

getDDLName=ddlOldName;

getSelectValues();

objTxt=txt_id;//获取输入文本框对象

top = getLength("offsetTop",txt_id.id)+objTxt.offsetHeight;

left= getLength("offsetLeft",txt_id.id);

width=objTxt.offsetWidth-2;

oInterval = window.setInterval("beginSearch()",2000);//启用计时

}

//获取对应属性的长度

function getLength(attribute,id)

{

var offset = 0;

var item = document.getElementById(id);

while (item)

{

offset += item[attribute];

item = item.offsetParent;

}

return offset;

}

//停止计时

function fnStopInterval()

{

window.clearInterval(oInterval);

}

//自动完成提示

function beginSearch(){

if(objTxt.value.length>0 && tempValue!=objTxt.value)

{

sumSearchCount=0;

tempValue=objTxt.value;

var iframe_show = document.getElementById("coverddl");

var div_value = document.getElementById("divMsg");

iframe_show.style.display="block";

div_value.style.top=top+"px";

div_value.style.display="block";

div_value.style.left=left+"px";

div_value.style.width=width+"px";

div_value.innerHTML="";

var leng = texts.length;

var txt_value = objTxt.value;

var row="";

for(var i=0;i

if(texts[i].indexOf(txt_value)!=-1){

row = row + "

"+texts[i]+"
";

tempDiv[sumSearchCount]=i;

sumSearchCount++;

}

}

div_value.innerHTML=row;

}

else if(objTxt.value.length==0 || objTxt.value == null)

{

document.getElementById("coverddl").style.display="none";

document.getElementById("divMsg").innerHTML="";

}

}

//提示内容单击保存到文本框中

function span_click(sp)

{

clear();

objTxt.value=sp.innerHTML;

document.getElementById(ddlName).options[sp.id.substring(sp.id.indexOf('_')+1,sp.id.length)].selected="selected";

document.getElementById(ddlName).fireEvent("onchange");

}

//停止查询,关闭提示

function closeSearch()

{

var tbl = document.activeElement.parentElement;

if(tbl && tbl.id!="divMsg")//防止使用上下键后丢失提示内容

{

clear();

document.getElementById("divMsg").innerHTML="";

}

else if(currentIndex==-1)

{

clear();

document.getElementById("divMsg").innerHTML="";

}

}

//清空提示

function clear()

{

fnStopInterval();

values=null;

texts=null;

tempDiv=null;

currentIndex=-1;

tempValue="";

document.getElementById("coverddl").style.display="none";

document.getElementById("divMsg").style.display="none";

}

//使用键盘上下方向键和enter键

function changeSelect()

{

var iframeContent = document.getElementById("coverddl");

if(iframeContent && iframeContent.style.display=="block")

{

if (event.keyCode == 38 || event.keyCode == 40 || event.keyCode == 13)

{

if(currentIndex!=-1) document.getElementById("divsearch_"+tempDiv[currentIndex]).style.backgroundColor="";

if (event.keyCode == 38 && currentIndex > 0)

{

currentIndex--;

document.getElementById("divsearch_"+tempDiv[currentIndex]).style.backgroundColor="#3366CC";

}

else if (event.keyCode == 40 && currentIndex

{

currentIndex++;

document.getElementById("divsearch_"+tempDiv[currentIndex]).style.backgroundColor="#3366CC";

}

else if (event.keyCode == 13)

{

if(currentIndex > -1)

{

var divpart = document.getElementById("divsearch_"+tempDiv[currentIndex]);

objTxt.value=divpart.innerHTML;

document.getElementById(ddlName).options[tempDiv[currentIndex]].selected="selected";

clear();

//document.getElementById(ddlName).fireEvent("onchange");

//document.form1.οnsubmit=function (){return false;};

}

}

}

}

}

// -->

TypeName="TestDAL">

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值