十分鐘打造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)文章
微信小程序?qū)崿F(xiàn)即時(shí)通信聊天功能的實(shí)例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)即時(shí)通信聊天功能的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
談?wù)凱HP中相對(duì)路徑的問(wèn)題與絕對(duì)路徑的使用
經(jīng)常看到有人踩在了PHP路徑的坑上面了,感覺(jué)有必要來(lái)說(shuō)說(shuō)PHP中相對(duì)路徑的一些坑,以及PHP中絕對(duì)路徑的使用,下面一起來(lái)看看。2016-08-08
javascript實(shí)現(xiàn)類似超鏈接的效果
這篇文章主要介紹了使用javascript實(shí)現(xiàn)類似超鏈接的效果的特效,通過(guò)示例熟悉javascript事件,這里推薦給大家。2014-12-12

