输入下拉框
javascript实现谷歌下拉提示框
程序主要来实现像谷歌那样的下拉提示,代码不多,也很容易实现看效果图由于没有使用
AJAX来实现,当输入的时候才访问数据库,所以在打开这个页面之前就将需要的值传入,前
提值不多。否则太卡。然后将传递来的JAVA的数据转化为JS .
看代码
首先做一个转化下一步我们就要用层来构造一个下拉的提示
用JS来实现
function getAbsolutePos(el)
{
var SL = 0, ST = 0;
var is_div = /^div$/i.test(el.tagName);
if (is_div && el.scrollLeft) SL = el.scrollLeft;
if (is_div && el.scrollTop) ST = el.scrollTop;
var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
if (el.offsetParent)
{
var tmp = this.getAbsolutePos(el.offsetParent);
r.x += tmp.x;
r.y += tmp.y+2.5;
}
return r;
}
function beMouseOverEFF(i)
{
if ((i>=0)&(i<=array.length-1))
{
document.getElementById("item" + i).className="item_high";
}
}
function beMouseOutEFF(i)
{
if ((i>=0)&(i<=array.length-1))
{
document.getElementById("item" + i).className="item_normal";
}
}
function beMouseOver(i)
{
document.getElementById("ba").focus();
beMouseOutEFF(zz);
zz=i;
beMouseOverEFF(zz);
}
function beMouseOut(i)
{
beMouseOutEFF(i);
}
function beClick(i)
{
document.getElementById("ba").value=array[i];
document.getElementById("search_suggest").style.display="none";
document.getElementById("ba").focus();
}
function beKeyUp()
{
var key = document.getElementById("ba").value;
if(key.length>0)
{
stateChange(key);
}
else
{
document.getElementById("search_suggest").innerHTML="";
}
}
function stateChange(key)
{
positionDiv();
document.getElementById("search_suggest").innerHTML="";
document.getElementById("search_suggest").style.display="inline";
array=allStr.split('|');
for(var i=0;i
" +array[i]+ "";
}
}
document.getElementById("search_suggest").innerHTML+="
关闭
";
document.getElementById("search_suggest").style.display="inline";
}
function positionDiv()
{
var DivRef= document.getElementById("search_suggest");
DivRef.style.position = "absolute";
var t=document.getElementById("ba");
DivRef.style.top= getAbsolutePos(t).y;
DivRef.style.left= getAbsolutePos(t).x+1 ;
DivRef.style.height=array.length*20;
}
function hiddenDiv()
{
document.getElementById("search_suggest").style.display="none";
}
要想实现上面的效果我们还要加入一些CSS来完成
.item_normal
{
BORDER-LEFT: #666666 1px solid;
BORDER-RIGHT: #666666 1px solid;
width:102px;
background-color:#ffffff;
overflow: hidden;
padding-left:2px;
}
.itemBg
{
BORDER-LEFT: #666666 1px solid;
BORDER-RIGHT: #666666 1px solid;
cursor:default;
background-color:#ffffff;
width:102px;
padding-left:2px;
}
.item_high
{
background-color:#326BC5;
cursor:default;
width:102px;
color:white;
padding-left:2px;
}
.item_button
{
BORDER-LEFT: #666666 1px solid;
BORDER-RIGHT: #666666 1px solid;
BORDER-BOTTOM: #666666 1px solid;
text-align:right;
background-color:#ffffff;
width:102px;
cursor:hand;
padding-left:2px;
}
.suggest_hidden
{
display:none;
}
然后就是我们那个输入框和提示框了,看了上面的代码下拉显示的框用层来实现