一个模仿Google Suggest的例子

先来看看效果吧
[img]http://zpl3001.iteye.com/upload/picture/pic/22145/229d1b71-45f3-3b41-bcfd-fb07a0aca9e5.jpg[/img]
把两个文件直接copy过去,再自己为数据库添加数据,就可以运行。

/**
* @author J's Fantasy
*/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ZH-CN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style type="text/css">
body {
font:11px arial;
}
.suggest_link{
background-color:#FFFFCC;
padding:2px 6px 2px 6px;
}
.suggest_link_over{
cursor:default;
color:white;
background-color:#3366CC;
padding:2px 6px 2px 6px;
}
#suggest{
position:absolute;
text-align:left;
width:153px;
border:1px solid #000000;
}
</style>
<script type="text/javascript">

function getXmlHttpRequest(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}else if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHttp");
}else{
alert("The browser does not support XmlHttpRequest object");
return;
}
}

var xmlHttp=getXmlHttpRequest();

function search(){
var str=document.getElementById("txt").value;
//hide search
if(str==""){
document.getElementById('suggest').style.display='none';
return;
}else{
//display the suggest
document.getElementById('suggest').style.display='';
}

//release the pressure for server because of input in field at a high speed
if(xmlHttp.readyState==4||xmlHttp.readyState==0){
var url="g_suggest.jsp?para="+str;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=callback;
xmlHttp.send(null);
}
}

function callback(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
var str=xmlHttp.responseText;
var str1=str.split("\n");
var result="";
for(i=0;i<str1.length;i++){
result+='<div onmouseover="javascript:suggestOver(this);"';
result+='onmouseout="javascript:suggestOut(this);"';
result+='onclick="javascript:setSearch(this.innerHTML);"';
result+='class="suggest_link">'+str1[i]+'</div>';
}
document.getElementById("suggest").innerHTML=result;
}
else{
alert("problem retrieving data:"+xmlHttp.statusText);
}
}
}

//mouse over function
function suggestOver(div_value){
div_value.className='suggest_link_over';
}
//mouse out function
function suggestOut(div_value){
div_value.className='suggest_link';
}
//click function
function setSearch(value){
document.getElementById('txt').value=value;
document.getElementById('suggest').innerHTML='';
document.getElementById('suggest').style.display='none';
}

OnDocumentClick=function(event){
if(!event){
event=window.event;//ie
}
var e=event.target;//for firefox
if(!e){
e=event.srcElement;//for ie
}
while(e){
//only if event source is on search_suggest or the search box
//the popup div will not be hidden
if(e==document.getElementById('suggest')||e==document.getElementById('txt')){
return;
}
e=e.parentNode;
}
document.getElementById('suggest').style.display="none";
}

//for ie
try{
document.onclick=OnDocumentClick;
}catch(e){
}
//for firfox(core Gecko)
try{
document.addEventListener('click',OnDocumentClick,true);
}catch(e){
}

</script>
<head>
<body>
<center><b><h3>Google Suggest</h3><b></center><hr>
<form id="gsuggest" action="http://www.google.com/search">
<input id="txt" type="text" onkeyup="search()" onfocus=""/>
<input id="go" type="submit" value="Google" alt="search"/><br>
<div id="suggest" style="display:none"></div>
</form>
</body>
</html>

<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8" import="java.sql.*"%>
<%
out.clear();
//keep the user's browser from caching the response
response.addHeader("Expires","Mon,26 Jul 1997 07:00:00 GMT");
response.addHeader("Last-Modified",new java.util.Date().toGMTString());
response.addHeader("Cache-Control","no-cache,must-revalidate");
response.addHeader("Pragma","no-cache");
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","19850403");
String str=request.getParameter("para");
out.print(str+"---\n");
if(str==null||str.equals("")){
return;
}
String sql="select title from suggest where lcase(title) like lcase('"+str+"%') order by title";
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
out.print(rs.getString(1)+"\n");
}
rs.close();
stmt.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
out.flush();
//out.close();
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值