繁体中文
设为首页
加入收藏
当前位置:ASP技术首页 >> ASP基础 >> 下拉菜单支持输入,并根据输入内容自动定位

下拉菜单支持输入,并根据输入内容自动定位

2006-06-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:下拉菜单支持输入,并根据输入内容自动定位: 参考:演员发表于 10/23/2001 8:58:16 AM 的文章 “罗亭的可输入下拉框的解密简化版.”,在此特别感谢相关人等。 本文为这个下拉框增加了一点小小的功能:输入能够定...

下拉菜单支持输入,并根据输入内容自动定位:

参考:演员发表于 10/23/2001 8:58:16 AM 的文章 “罗亭的可输入下拉框的解密简化版.”,在此特别感谢相关人等。

本文为这个下拉框增加了一点小小的功能:输入能够定位在已有的选择框内。还有一个缺点,各位给改改:输入的时候不能够自动拉开选择框,怎么办?

function getLeftPostion( theObj )

{

var pos = 0;

while ( theObj != null )

{

pos += theObj.offsetLeft;

//get the Object which contain theObj.

theObj = theObj.offsetParent;

}

return pos;

}

function getTopPostion( theObj )

{

var pos = 0;

while ( theObj != null )

{

pos += theObj.offsetTop;

//get the Object which contain theObj.

theObj = theObj.offsetParent;

}

return pos;

}

function checkVersion()

{

var isBadVersion=true;

var curVer=navigator.appVersion;

var pos=parseInt(curVer.indexOf("MSIE"));

if (pos>=1)

{

var intVer=parseInt(curVer.charAt(pos+5));

if (intVer>=5)

{ isBadVersion=false;}

}

if (isBadVersion)

{

var msg="This page may not be displayed properly:\n"+

" This product requires Microsoft Internet Explorer 5 or later browser only.";

alert(msg);

}

}

//check the browser version

checkVersion();

// the array of comboBoies

theArray = new Array();

function combobox(objId, objHandler)

{

this.comObj = document.all[objId];

this.comObj.selectedIndex = -1;

this.getValue = getValue;

this.doResize = doResize;

this.doChange = doChange;

this.loseFocus = loseFocus;

this.doSelectIdx = doSelectIdx;

this.focus = focus;

this.keyPress = keyPress;

this.change = change;

var strMsg="";

//------------------------------------------------------------------------------------------------------

// create the text object

//------------------------------------------------------------------------------------------------------

var txtObjIdName = objId + "_text";

if (document.all[txtObjIdName] != null)

{

strMsg="The following id: '" + txtObjIdName +"' is used internally by the Combo Box!\r\n"+

"Use of this id in your page may cause malfunction. Please use another id for your controls.";

alert(strMsg);

}

var txtInner = "";

this.comObj.insertAdjacentHTML("afterEnd", txtInner);

this.txtObj = document.all[txtObjIdName];

//------------------------------------------------------------------------------------------------------

// end

//------------------------------------------------------------------------------------------------------

this.beResizing = false;

this.doResize();

theArray[theArray.length] = this;

}

function loseFocus()

{

var theComObj = this.comObj;

var theTxtObj = this.txtObj;

var i;

theComObj.selectedIndex = -1;

if (theTxtObj.value == "")

{

return;

}

var optLen = theComObj.options.length;

for (i=0; i

{

var comVal = theComObj.options[i].text;

var txtVal = theTxtObj.value;

if (comVal == txtVal)

{

theComObj.selectedIndex = i;

return;

}

}

}

function doResize()

{

if (!this.beResizing)

{

this.beResizing = true;

this.txtObj.style.display="none";

this.comObj.style.position="static";

this.txtObj.style.posLeft = getLeftPostion(this.comObj);

this.txtObj.style.posTop = getTopPostion(this.comObj) + 1;

this.txtObj.style.posWidth = this.comObj.offsetWidth - 16;

this.txtObj.style.posHeight = this.comObj.offsetHeight;

this.comObj.style.position ="absolute";

this.comObj.style.posLeft = this.txtObj.style.posLeft;

this.comObj.style.posTop = this.txtObj.style.posTop;

this.offWidth = this.comObj.offsetWidth;

var strRect = "rect(0 "+(this.comObj.offsetWidth)+" "+ this.comObj.offsetHeight + " "+(this.txtObj.style.posWidth - 2 )+")";

this.comObj.style.clip = strRect;

this.txtObj.style.display="";

this.beResizing = false;

}

}

function doChange()

{

var idx = this.comObj.selectedIndex;

var opt = this.comObj.options[idx];

this.txtObj.value = opt.text;

this.txtObj.focus();

this.txtObj.select();

this.comObj.selectedIndex=-1;

}

function getValue()

{

return this.txtObj.value;

}

function doSelectIdx(i)

{

var optLen = this.comObj.options.length;

if ((i >=0) && (i < optLen))

{

this.comObj.selectedIndex = i;

this.txtObj.value = this.comObj.options[i].text;

return;

}

this.txtObj.value = "";

}

function focus()

{

this.txtObj.focus();

}

/*resize all combobox when window be resized*/

function resetAllSize()

{

var i;

for (i=0; i < theArray.length; i++)

{

theArray[i].doResize();

}

}

////////////////定位函数开始,我加的///////////////

function keyPress()

{

var txtStr;

var comStr;

var maxInt = 0;

var defInt = 0;

var defJ;

txtStr = this.txtObj.value;

//document.form1.test.value=txtStr;

var j;

for(j=0;j

{

comStr = this.comObj.options[j].text;

var m;

for(m=0;m

{

if(txtStr.charCodeAt(m) != comStr.charCodeAt(m))

{

maxInt = m;

break;

}

}

if (defInt < maxInt)

{

defInt = maxInt;

defJ = j;

}

}

this.comObj.selectedIndex = defJ;

}

责任编辑:admin
相关文章