ajax制作类似google搜索
2007-10-02 00:32
513 查看
<script type="text/javascript">
var xmlHttp;//定义XmlHttpRequest对象
function createXmlHttp()//create object
{
try
{
xmlHttp=new XMLHttpRequest();
}
catch(microsoft)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(othermicrosoft)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(failed)
{
xmlHttp=false;
}
}
}
}
//ul的focusout事件 失去焦点时隐藏智能提示
function FocusOut()
{
var ob=event.srcElement;
ob.style.display='none';
}
//LI上的鼠标Over事件 改变背景色
function MouseOver()
{
var ob=event.srcElement;
ob.style.backgroundColor='#E0E0E0';
}
//LI上的鼠标Out事件 背景色还原
function MouseOut()
{
var ob=event.srcElement;
ob.style.backgroundColor='#fff';
}
//LI上的鼠标Click事件 获得智能提示的列表框值
function Click()
{
var ob=event.srcElement;
document.getElementById("Search1_txtKey").value=ob.innerText;
document.getElementById("hint").style.display='none';
}
function getInformation(obj)
{
//输入框值为空 搜索按钮不可用
if(obj.value=="")
{
document.getElementById("<%=btnSearch.ClientID%>").disabled=true;
return;
}
document.getElementById("<%=btnSearch.ClientID%>").disabled=false;
createXmlHttp();
var url="/News/AjaxPage/DealNews.aspx?name="+escape(obj.value);//传递中文必须编码
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=handleRequest;
xmlHttp.send(null);
}
function handleRequest()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
//清空智能提示框
var oldChild=document.getElementById("hint").childNodes;
for(i=0;i<oldChild.length;i++)
{
document.getElementById("hint").removeChild(oldChild[i]);
}
//获得返回值
var xmlDoc=xmlHttp.responseXML;
var nodes=xmlDoc.selectNodes("//Element");
if(nodes.length<=0)
{
//如果得到的值为空就返回
return;
}
//得到了返回值 动态创建列表元素
var UL=document.createElement("UL");
UL.attachEvent('onmouseleave',FocusOut);
for(i=0;i<nodes.length;i++)
{
//创建LI对象
var LI=document.createElement("LI");
LI.innerText=nodes[i].firstChild.nodeValue;
//给li对象添加事件 用attachEvent绑定事件 用setAttribute好象不行
LI.attachEvent('onmouseover',MouseOver);
LI.attachEvent('onmouseout',MouseOut);
LI.attachEvent('onclick',Click);
UL.appendChild(LI);
}
//设置ul的高度
var height;
if(nodes.length<10)
{
height=nodes.length*20;
}
else
{
height=10*20;
}
UL.style.cssText="height:"+height+"px;width:100%;margin:0;padding:0;border:1px solid #758ca9;overflow:hidden;";//对UL设置css样式
document.getElementById("hint").appendChild(UL);
}
}
}
var xmlHttp;//定义XmlHttpRequest对象
function createXmlHttp()//create object
{
try
{
xmlHttp=new XMLHttpRequest();
}
catch(microsoft)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(othermicrosoft)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(failed)
{
xmlHttp=false;
}
}
}
}
//ul的focusout事件 失去焦点时隐藏智能提示
function FocusOut()
{
var ob=event.srcElement;
ob.style.display='none';
}
//LI上的鼠标Over事件 改变背景色
function MouseOver()
{
var ob=event.srcElement;
ob.style.backgroundColor='#E0E0E0';
}
//LI上的鼠标Out事件 背景色还原
function MouseOut()
{
var ob=event.srcElement;
ob.style.backgroundColor='#fff';
}
//LI上的鼠标Click事件 获得智能提示的列表框值
function Click()
{
var ob=event.srcElement;
document.getElementById("Search1_txtKey").value=ob.innerText;
document.getElementById("hint").style.display='none';
}
function getInformation(obj)
{
//输入框值为空 搜索按钮不可用
if(obj.value=="")
{
document.getElementById("<%=btnSearch.ClientID%>").disabled=true;
return;
}
document.getElementById("<%=btnSearch.ClientID%>").disabled=false;
createXmlHttp();
var url="/News/AjaxPage/DealNews.aspx?name="+escape(obj.value);//传递中文必须编码
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=handleRequest;
xmlHttp.send(null);
}
function handleRequest()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
//清空智能提示框
var oldChild=document.getElementById("hint").childNodes;
for(i=0;i<oldChild.length;i++)
{
document.getElementById("hint").removeChild(oldChild[i]);
}
//获得返回值
var xmlDoc=xmlHttp.responseXML;
var nodes=xmlDoc.selectNodes("//Element");
if(nodes.length<=0)
{
//如果得到的值为空就返回
return;
}
//得到了返回值 动态创建列表元素
var UL=document.createElement("UL");
UL.attachEvent('onmouseleave',FocusOut);
for(i=0;i<nodes.length;i++)
{
//创建LI对象
var LI=document.createElement("LI");
LI.innerText=nodes[i].firstChild.nodeValue;
//给li对象添加事件 用attachEvent绑定事件 用setAttribute好象不行
LI.attachEvent('onmouseover',MouseOver);
LI.attachEvent('onmouseout',MouseOut);
LI.attachEvent('onclick',Click);
UL.appendChild(LI);
}
//设置ul的高度
var height;
if(nodes.length<10)
{
height=nodes.length*20;
}
else
{
height=10*20;
}
UL.style.cssText="height:"+height+"px;width:100%;margin:0;padding:0;border:1px solid #758ca9;overflow:hidden;";//对UL设置css样式
document.getElementById("hint").appendChild(UL);
}
}
}
相关文章推荐
- ASP+AJAX做类似google的搜索提示
- ASP+AJAX做类似google的搜索提示
- ASP+AJAX做类似google的搜索提示
- AJAX实现类似Google搜索提示的基础配置
- 实现类似google搜索效果,文本框输入智能提示,没有用ajax控件和第三方控件,完全手写代码
- ASP+AJAX做类似google的搜索提示
- AJAX的下拉查询,效果跟google的搜索提示类似
- AJAX实例二:实现类似Google的搜索提示【原著】
- AJAX实例二:实现类似Google的搜索提示【原著】
- 制作Google搜索表单
- 制作 类似 google 下拉框的用户自定义控件的实现思路及代码参考
- AJAX实例二:实现类似Google的搜索提示
- 模拟Google首页(dwr实现ajax) 弹出补全搜索结果
- Google搜索结果中的类似网页是什么意思?
- 模拟一个类似百度google的模糊搜索下拉列表
- 搜索功能提示(类似google和baidu)
- 用Ajax结合div来实现的查询控件(类似51job里面的职位搜索功能)
- winform实现类似google的搜索提示Suggest Search
- c# winform textBox的下拉框是制作, 如google的搜索栏.
- Google AJAX 搜索 API