可输入下拉列表的实现方法 (2)
objDiv.style.width=obj.offsetWidth
objDiv.style.height=’’;
objDiv.style.overflowY=’’;
objDiv.innerHTML=’’
//读取select的项目放到Div里。
for(var x=0;x<seleObj.options.length;x++)
{objDiv.innerHTML+="<div onmouseover=\"divOnmoveover(this,’" + obj.id + "’)\" style=’width:100%;white-space: nowrap;cursor: default;’>"+seleObj.options[x].text+"</div>"}
//调整Div高度,过度显示滚动条
if(x>8)
{
objDiv.style.height=100;
objDiv.style.overflowY=’auto’;
}
objDiv.style.display=’’
if(ie){HideOverSels(objDiv.id)}
objDiv.onmouseover=function(){m_intTextSelectIn=true}
objDiv.onmouseout=function(){m_intTextSelectIn=false;obj.focus();}
obj.onclick=function(){showSelect(obj,A_seleObj);obj.onkeyup();}
//自动匹配选项中符合条件的记录
obj.onkeyup=function(){
if(obj.value==’’){return false}
var objChilddiv=objDiv.getElementsByTagName("div")
for(var x=0;x<objChilddiv.length;x++)
{objChilddiv[x].style.cssText=’’}
for(var x=0;x<objChilddiv.length;x++)
{
var strChilddiv=(ie)?objChilddiv[x].outerText:obj.textContent if(strChilddiv.substr(0,obj.value.length)==obj.value)
{
objDiv.scrollTop=objChilddiv[x].offsetHeight*x
objChilddiv[x].style.cssText=’background-color: #330066;color: #ffffff;’
return true
}
}
}
obj.onblur=function(){if(!m_intTextSelectIn){objDiv.style.display=’none’};if(ie){HideOverSels(objDiv.id)}}
}
// 隐藏被ID为objID的对象(层)遮挡的所有select
function HideOverSels(objID)
{
var sels = document.getElementsByTagName(’select’);
for (var i = 0; i < sels.length; i++)
if (Obj1OverObj2(document.getElementById(objID), sels[i]))
sels[i].style.visibility = ’hidden’;
else
sels[i].style.visibility = ’visible’;
}
//判断obj1是否遮挡了obj2
function Obj1OverObj2(obj1, obj2)
{
var pos1 = getPosition(obj1)
var pos2 = getPosition(obj2)
var result = true;
var obj1Left = pos1.left - window.document.body.scrollLeft;
var obj1Top = pos1.top - window.document.body.scrollTop;
var obj1Right = obj1Left + obj1.offsetWidth;
var obj1Bottom = obj1Top + obj1.offsetHeight;
var obj2Left = pos2.left - window.document.body.scrollLeft;
var obj2Top = pos2.top - window.document.body.scrollTop;
var obj2Right = obj2Left + obj2.offsetWidth;
var obj2Bottom = obj2Top + obj2.offsetHeight;
if (obj1Right <= obj2Left || obj1Bottom <= obj2Top ||
obj1Left >= obj2Right || obj1Top >= obj2Bottom)
result = false;
return result;

[
1]
[2] [
3] [
4]
