十分鐘打造AutoComplete自動(dòng)完成效果代碼
更新時(shí)間:2009年12月26日 23:37:53 作者:
十分鐘打造山寨版谷歌AutoComplete,因?yàn)槭鞘昼姶蛟斐鰜?lái)的,所以只考慮表面效果,其他全部忽略,絕對(duì)的山寨。
.老生常談---XmlHttpRequest
代碼
var xmlHttp;
function createXmlHttpRequest()
{
if(window.ActieveXObject)
{
xmlHttp=new ActieveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}
如果不用Jquery手寫(xiě)javascript,上面要改成XmlHttpRequest對(duì)象池,這就不寫(xiě)了。
.觸發(fā)AutoComplete函數(shù)
代碼
function $E(argument)
{
return document.getElementById(argument);
}
function GetInfo(e)
{
var input=$E("Text1").value;
if(input.length<=0)
{
changeDisplay();
}
else
{
createXmlHttpRequest();
var keyword=e.value;
xmlHttp.onreadystatechange=readyStateChangeHandle;
var url="AutoComplete.ashx?keyword="+keyword+"&timeStamp="+new Date().getTime();
xmlHttp.open("GET",url,true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.send(null);
}
}
這里服務(wù)器后臺(tái)是在.NET平臺(tái)下的xxx.ashx一般處理程序響應(yīng)客戶端得請(qǐng)求,當(dāng)然也可以用webserviece或者aspx.cs或WCF來(lái)響應(yīng)客戶端得請(qǐng)求,但是需要注意的是webservice響應(yīng)客戶端必須遵循遵循soap協(xié)議(當(dāng)然也可以通過(guò)修改配置文件讓webservice響應(yīng)get或post請(qǐng)求),xxx.ashx和aspx.cs響應(yīng)客戶端要遵循h(huán)ttp協(xié)議。當(dāng)然后臺(tái)也可以PHP或JAVA等。
.鼠標(biāo)move變色
function changecolor(event)
{
event.style.background="#00FFFF";
}
function changebackcolor(event)
{
event.style.background="#FFFFFF"
}
.選區(qū)隱藏與出現(xiàn)
代碼
function ChangeDivDisplay(e)
{
document.getElementById("Text1").value=e.firstChild.data;
var html="";
document.getElementById("searchResult").innerHTML=html;
document.getElementById("searchResult").style.visibility="hidden";
}
function changeDisplay()
{
var html="";
document.getElementById("searchResult").innerHTML=html;
document.getElementById("searchResult").style.visibility="hidden";
}
.回調(diào)函數(shù)
代碼
function readyStateChangeHandle()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
if(xmlHttp.responseText!="]")
{
var resultDiv=$E("searchResult");
var josnStr=eval('('+xmlHttp.responseText+')');
var html="";
for (var key in josnStr)
{
html+= "<span onmousemove=\"changecolor(this)\" onclick=\"ChangeDivDisplay(this)\" onmouseout=\"changebackcolor(this)\" style=\"width: 195px; text-align: left; background-color: #FFFFFF; display: block; cursor: default;\">"+josnStr[key].bookName +"<span style=\" color: #008000; float: right;\">"+josnStr[key].bookCount+"本書(shū)</span></span>";
}
html+= "<span style=\" width: 195px; background-color: #FFFFFF; display: block;\"><a href=\"javascript:changeDisplay()\" style=\"float: right;\">關(guān)閉</a></span>";
resultDiv.innerHTML=html;
document.getElementById("searchResult").style.visibility="visible";
}
else
{
changeDisplay();
}
}
}
}
這里我用的是json,當(dāng)然也可以用XML或者字符串。
代碼
復(fù)制代碼 代碼如下:
var xmlHttp;
function createXmlHttpRequest()
{
if(window.ActieveXObject)
{
xmlHttp=new ActieveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}
如果不用Jquery手寫(xiě)javascript,上面要改成XmlHttpRequest對(duì)象池,這就不寫(xiě)了。
.觸發(fā)AutoComplete函數(shù)
代碼
復(fù)制代碼 代碼如下:
function $E(argument)
{
return document.getElementById(argument);
}
function GetInfo(e)
{
var input=$E("Text1").value;
if(input.length<=0)
{
changeDisplay();
}
else
{
createXmlHttpRequest();
var keyword=e.value;
xmlHttp.onreadystatechange=readyStateChangeHandle;
var url="AutoComplete.ashx?keyword="+keyword+"&timeStamp="+new Date().getTime();
xmlHttp.open("GET",url,true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.send(null);
}
}
這里服務(wù)器后臺(tái)是在.NET平臺(tái)下的xxx.ashx一般處理程序響應(yīng)客戶端得請(qǐng)求,當(dāng)然也可以用webserviece或者aspx.cs或WCF來(lái)響應(yīng)客戶端得請(qǐng)求,但是需要注意的是webservice響應(yīng)客戶端必須遵循遵循soap協(xié)議(當(dāng)然也可以通過(guò)修改配置文件讓webservice響應(yīng)get或post請(qǐng)求),xxx.ashx和aspx.cs響應(yīng)客戶端要遵循h(huán)ttp協(xié)議。當(dāng)然后臺(tái)也可以PHP或JAVA等。
.鼠標(biāo)move變色
復(fù)制代碼 代碼如下:
function changecolor(event)
{
event.style.background="#00FFFF";
}
function changebackcolor(event)
{
event.style.background="#FFFFFF"
}
.選區(qū)隱藏與出現(xiàn)
代碼
復(fù)制代碼 代碼如下:
function ChangeDivDisplay(e)
{
document.getElementById("Text1").value=e.firstChild.data;
var html="";
document.getElementById("searchResult").innerHTML=html;
document.getElementById("searchResult").style.visibility="hidden";
}
function changeDisplay()
{
var html="";
document.getElementById("searchResult").innerHTML=html;
document.getElementById("searchResult").style.visibility="hidden";
}
.回調(diào)函數(shù)
代碼
復(fù)制代碼 代碼如下:
function readyStateChangeHandle()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
if(xmlHttp.responseText!="]")
{
var resultDiv=$E("searchResult");
var josnStr=eval('('+xmlHttp.responseText+')');
var html="";
for (var key in josnStr)
{
html+= "<span onmousemove=\"changecolor(this)\" onclick=\"ChangeDivDisplay(this)\" onmouseout=\"changebackcolor(this)\" style=\"width: 195px; text-align: left; background-color: #FFFFFF; display: block; cursor: default;\">"+josnStr[key].bookName +"<span style=\" color: #008000; float: right;\">"+josnStr[key].bookCount+"本書(shū)</span></span>";
}
html+= "<span style=\" width: 195px; background-color: #FFFFFF; display: block;\"><a href=\"javascript:changeDisplay()\" style=\"float: right;\">關(guān)閉</a></span>";
resultDiv.innerHTML=html;
document.getElementById("searchResult").style.visibility="visible";
}
else
{
changeDisplay();
}
}
}
}
這里我用的是json,當(dāng)然也可以用XML或者字符串。
相關(guān)文章
js window.print實(shí)現(xiàn)打印特定控件或內(nèi)容
window.print可以打印網(wǎng)頁(yè),但有時(shí)候我們只希望打印特定控件或內(nèi)容,怎么辦呢?可以把要打印的內(nèi)容放在div中,然后用下面的代碼進(jìn)行打印,希望對(duì)大家有所幫助2013-09-09
JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)
這篇文章主要是對(duì)JavaScript調(diào)用客戶端的可執(zhí)行文件(示例代碼)進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-11-11
Bootstrap實(shí)現(xiàn)模態(tài)框效果
這篇文章主要為大家詳細(xì)介紹了Bootstrap實(shí)現(xiàn)模態(tài)框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
JS如何將當(dāng)前日期或指定日期轉(zhuǎn)時(shí)間戳
這篇文章主要介紹了js將當(dāng)前日期或指定日期轉(zhuǎn)時(shí)間戳超詳細(xì),通過(guò)實(shí)例代碼介紹了JS時(shí)間戳轉(zhuǎn)換方式,需要的朋友可以參考下2023-05-05
小程序?qū)崿F(xiàn)計(jì)時(shí)器小功能
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)計(jì)時(shí)器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
Bootstrap每天必學(xué)之簡(jiǎn)單入門(mén)
相信大家閱讀了Bootstrap第一篇文章后,對(duì)Bootstrap充滿了探索欲望,小編也對(duì)Bootstrap產(chǎn)生了興趣,所以今天再整理一篇關(guān)于Bootstrap的入門(mén)介紹,希望大家喜歡。2015-11-11
iframe src為圖片時(shí)的高度自適應(yīng)的代碼
iframe src為圖片時(shí)的高度自適應(yīng)的代碼...2007-10-10

