JS
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
var suggest=
{
_obj:"",
oldvalue:"",
init:function(obj)
{
this._obj=$("#"+obj);
this._obj.keydown(function(e)
{
suggest.EventKeyDown(e.keyCode,obj);
});
this._obj.keyup(function(e)
{
suggest.GetData(obj,e.keyCode);
});
this._obj.blur(function(e)
{
suggest.HideDiv();
});
$("body").prepend("<div id='floor' class='floor'></div>");
$("#floor").hide();
var objPos=this.getAbsolutePos(obj);
$("#floor")[0].style.left=objPos.x+"px";
$("#floor")[0].style.top=objPos.y+"px";
},
getAbsolutePos:function(el)
{
var obj=document.getElementById(el);
var sl=obj["offsetLeft"];
var st=obj.offsetTop+obj.offsetHeight;
while(obj["offsetParent"])
{
obj=obj.offsetParent;
sl+=obj.offsetLeft;
st+=obj.offsetTop;
}
var r=
{x:sl,y:st};
return r;
},
GetData:function(obj,keycode)
{
if(keycode == 38 || keycode == 40 || keycode == 13 || keycode == 27 || keycode == 9) return;
if(this._obj.val()!=this.oldvalue &&this._obj.val()!="")
{
var data=_Default.Test(this._obj.val()).value;
if(data.length==0)
{
this.HideDiv();
return;
}
var div="";
for(var i=0;i<data.length;i++)
{
div+="<div class=unselected onmouseout = $(this).attr('class','unselected') onmouseover = suggest.MouseOver(this)>"+data[i]+"</div>";
}
$("#floor").html(div);
$("#floor").width(this._obj.width());
$("#floor").show();
this.oldvalue=this._obj.val();
}
},
EventKeyDown:function(keycode,sInput)
{
currentInput = $("#"+sInput);
if(keycode == 13)
{
currentInput.focus();
this.hideText();
}
if(keycode == 27) this.hideText(); //esc
selectedDiv = $("#floor>div[@class=selected]");
if(selectedDiv.text() != "")
{
selectedDiv.attr("class","unselected");
if(keycode == 38) //up
{
if(selectedDiv.prev().text() != "")
{
selectedDiv.prev().attr("class","selected");
currentInput.val(selectedDiv.prev().text());
}
else
{
$("#floor>div:last").attr("class","selected");
currentInput.val($("#floor>div:last").text());
}
}
else if(keycode == 40) //down
{
if(selectedDiv.next().text() != "")
{
selectedDiv.next().attr("class","selected");
currentInput.val(selectedDiv.next().text());
}
else
{
$("#floor>div:first").attr("class","selected");
currentInput.val($("#floor>div:first").text());
}
}
}
else if(keycode == 38)
{
$("#floor>div:last").attr("class","selected");
currentInput.val($("#floor>div:last").text());
}
else if(keycode == 40)
{
$("#floor>div:first").attr("class","selected");
currentInput.val($("#floor>div:first").text());
}
},
HideDiv:function()
{
$("#floor").hide();
$("#floor").html("");
},
MouseOver:function(sDiv)
{
$("#floor").children("div").attr("class","unselected");
$(sDiv).attr("class","selected");
this._obj.val($(sDiv).text());
}
}

</script>
CSS
1
<style type="text/css">2
.floor3

{
}{4
position: absolute;5
background-color:white;6
border: 1px solid;7
overflow: auto;8
}9
.unselected10

{
}{11
background-color: white;12
}13
.selected14

{
}{15
background-color: dodgerblue;16
color: white;17
} 18
</style>
前台调用:suggest.init(文本框ID);
后台文件:
1
protected void Page_Load(object sender, EventArgs e)2

{3
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));4
}5
[AjaxPro.AjaxMethod]6
public ArrayList Test(string searchValue)7

{8
ArrayList Values = new ArrayList();9
string str = "Select Id,Value from suggest where Value like '%"+searchValue+"%'";10
SqlDataReader sdr = SqlHelper.ExecuteReader(str);11
while (sdr.Read())12

{13
Values.Add(sdr["Value"].ToString());14
15
}16
sdr.Dispose();17
return Values;18
}
posted on
浙公网安备 33010602011771号