asp.net+js實(shí)現(xiàn)的ajax sugguest搜索提示效果
.gif)
功能:
1、可以有方向鍵上下控制。
2、支持關(guān)鍵字高亮。(在該此次代碼中省略)
3、對(duì)選中可按回車提交。
使用:重點(diǎn)關(guān)注id=tbxsearch和id=search_suggest這兩個(gè)東東。html部分涉及到定位的問(wèn)題,自己處理好,有問(wèn)題可以提問(wèn),細(xì)節(jié)自己把握。
注明:在接收的那個(gè)文件,其實(shí)應(yīng)該接收一個(gè)參數(shù)skey的,我先寫(xiě)死了。記得接收的時(shí)候先解碼一次。
申明:阿會(huì)楠根據(jù)網(wǎng)上一份原作者不詳?shù)拇a進(jìn)行了修改,以適合自己的項(xiàng)目并增加了多個(gè)功能。此次放出的代碼為基本實(shí)現(xiàn)代碼,也是最接近原來(lái)的代碼,略去其他功能。版權(quán)歸原作者所有。
document.writeln(" <div style=\"position:relative;margin-left:100px;margin-top:100px;\">");
document.write("<input id='tbxsearch' value='' type='text' maxlength='100' onkeyup='suggest(event,this)' onblur='inputOnblur()' \/>");
document.write("<div id=\"search_suggest\" class=\"suggest\" style=\"display:none;\"><\/div><\/div>");
document.write("<style style=\"text/css\">");
document.write("body,input{font:12px tahoma;}");
document.write("#tbxsearch{width:250px;}");
document.write(".suggest{position:absolute;+left:6px;top:23px;z-index:999;background:#fff;width:250px;text-align:left;border:1px solid #000;height:auto!important;height:20px;min-height:20px;clear:both;}");
document.write(".suggestOver{background:#3366CC;padding:2px 0 2px 0;color:white;}");
document.write("<\/style>");
var $=function(Id){
return document.getElementById(Id)?document.getElementById(Id):null;
};
var $ctag=function(tagName){
return document.createElement(tagName);
};
var $ajax=function createXMLHttpRequest(){
var xmlHttp=false;
try{
xmlHttp = new XMLHttpRequest();
}
catch(trymicrosoft){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(othermicrosoft){
try{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")}
catch(failed){}
}
}
return xmlHttp;
};
var suggestDiv=$("search_suggest");
var keynodes;
var lastKey="";
var selectedIndex=0;
var showSuggest=function(inputObj){
var xmlHttp = $ajax();
var key=document.getElementById("tbxsearch").value;
if(key==lastKey)return false;
else lastkey=key;
if(/^\s*$/.test(key)){
suggestDiv.style.display="none";
return false;
};
selectedIndex=-1;
xmlHttp.open("get","js/search.aspx?skey="+encodeURI(key)+"&t=" + new Date().getTime(),true);
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4&&xmlHttp.status == 200){
var xmldoc=xmlHttp.responseXML;
keynodes=xmldoc.getElementsByTagName("key");
if(keynodes.length>0)
{
suggestDiv.innerHTML="";
for(var i=0;i<keynodes.length;i++){
var keyDiv=$ctag("div");
keyDiv.style.width="100%";
keyDiv.style.padding="0";
keyDiv.style.margin="2px 0 2px 0";
keyDiv.style.height="18px";
keyDiv.style.lineHeight="18px";
keyDiv.style.cursor="default";
keyDiv.style.textIndent = "4px";
keyDiv.innerHTML = keynodes[i].getAttribute("value");
keyDiv.onmouseover=function(){
selectedIndex=-1;
divlist=suggestDiv.getElementsByTagName("div");
for(var k=0;k<divlist.length;k++){
divlist[k].className="";
if(divlist[k]==this)selectedIndex=k;
}
this.className="suggestOver";
};
keyDiv.onmouseout=function(){
this.className="";
};
keyDiv.onmousedown = function(){
document.getElementById("tbxsearch").value=this.innerHTML;
//這里寫(xiě)執(zhí)行搜索的代碼
};
suggestDiv.appendChild(keyDiv);
};
suggestDiv.style.display="block";
}else{
suggestDiv.style.display="none";
}
}
};
xmlHttp.send(null);
};
var changeSelect=function(isUp,inputObj){
if (isUp) selectedIndex++;
else selectedIndex--;
if(selectedIndex<0) selectedIndex=0;
var divlist=suggestDiv.getElementsByTagName("div");
if(selectedIndex>=divlist.length)
selectedIndex=divlist.length-1;
for(var i=0;i<divlist.length;i++){
if(i==selectedIndex){
divlist[i].className="suggestOver";
inputObj.value=divlist[i].innerHTML.replace(/<[^>]+>/g,"");
}else{
divlist[i].className="";
}
}
};
var suggest=function(event,inputObj){
event = event ? event : (window.event ? window.event : null);
var keyCode=event.keyCode;
if(keyCode==13){
if(selectedIndex != -1){
inputObj.value=keynodes[selectedIndex].getAttribute("value");
}
//這里寫(xiě)執(zhí)行搜索
}
if(keyCode==40||keyCode==38){
var isUp=false;
if(keyCode==40) {isUp=true;}
changeSelect(isUp,inputObj);
}else{
showSuggest(inputObj);
}
};
var inputOnblur=function(){setTimeout('suggestDiv.style.display="none";',100);};
search.aspx代碼:
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.GetEncoding("utf-8");
Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
Response.Write("<keylit>");
Response.Write("\t<key value=\"阿會(huì)楠一直在堅(jiān)持走自己的路\" />\n");
Response.Write("\t<key value=\"阿會(huì)楠今年25歲了!\" />\n");
Response.Write("\t<key value=\"阿會(huì)楠現(xiàn)在在汕頭!\" />\n");
Response.Write("\t<key value=\"阿會(huì)楠會(huì)回廣州!\" />\n");
Response.Write("\t<key value=\"搜索吧是阿會(huì)楠在大學(xué)期間的作品之一!\" />\n");
Response.Write("\t<key value=\"sosuo8.com by ahuinan\" />\n");
Response.Write("</keylit>");
}
}
</script>
打包下載http://xiazai.jb51.net/200904/yuanma/ajaxsuggest.rar
相關(guān)文章
ASP.NET MVC從控制器傳遞數(shù)據(jù)到視圖的四種方式詳解
本篇文章主要介紹了ASP.NET MVC從控制器傳遞數(shù)據(jù)到視圖的四種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01
asp.net URL重寫(xiě)簡(jiǎn)化版 速學(xué)URL重寫(xiě)
asp.net URL重寫(xiě)(URLRewriter)簡(jiǎn)化版 。速學(xué)URL重寫(xiě)2010-01-01
asp.net在后端動(dòng)態(tài)添加樣式表調(diào)用的方法
這篇文章主要介紹了asp.net在后端動(dòng)態(tài)添加樣式表調(diào)用的方法,涉及asp.net操作樣式表的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
動(dòng)態(tài)代理的5模式使用示例和Mixin模式
什么叫"動(dòng)態(tài)代理",代理模式我們都知道,動(dòng)態(tài)代理就是動(dòng)態(tài)生成的代理(采用Emit)。5種代理模式:ClassProxy、ClassProxyWithTarget、InterfaceProxyWithoutTarget、InterfaceProxyWithTarget、InterfaceProxyWithTargetInterface、Mixin模式2013-11-11
解決ASP.NET中"/"應(yīng)用程序中的服務(wù)器錯(cuò)誤的方法
這篇文章主要介紹了解決ASP.NET中"/"應(yīng)用程序中的服務(wù)器錯(cuò)誤的方法,,需要的朋友可以參考下2016-03-03
ASP.NET Web Api 2實(shí)現(xiàn)多文件打包并下載文件的實(shí)例
這篇文章主要介紹了ASP.NET Web Api 2利用ByteArrayContent和StreamContent實(shí)現(xiàn)多文件打包并下載的方法,提供源碼下載,需要的朋友可以參考下。2016-06-06
.net實(shí)現(xiàn)網(wǎng)站用戶登錄認(rèn)證
本文給大家介紹的是.net實(shí)現(xiàn)網(wǎng)站用戶登錄認(rèn)證的方法和實(shí)例,都非常的簡(jiǎn)單實(shí)用,需要的小伙伴可以參考下。2015-11-11
WPF在自定義文本框中實(shí)現(xiàn)輸入法跟隨光標(biāo)
本文主要為大家介紹了如何在WPF寫(xiě)一個(gè)自定義的文本框,并且能實(shí)現(xiàn)讓輸入法跟隨光標(biāo)。文中的示例代碼講解詳細(xì),需要的可以參考一下2022-02-02
.NET6創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)步驟
本文主要介紹了.NET6創(chuàng)建Windows服務(wù)的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

