搜索提示
上一篇 / 下一篇 2013-03-22 14:43:37 / 个人分类:其它
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta. http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<p align="left"><style. type="text/css"> <br />
body{ <br />
font-size:0.75em; <br />
border:0; <br />
margin:250px 0 0 0; <br />
padding:0; <br />
} <br />
#content{ <br />
width:450px; <br />
margin:auto;} <br />
<br />
#key{ <br />
width:300px; <br />
margin:0; <br />
padding:4px 0 0 5px; <br />
} <br />
<br />
.key_abnormal{ <br />
border-bottom:1px solid white; <br />
border-left:1px solid #8298BF; <br />
border-top:1px solid #8298BF; <br />
border-right:1px solid #8298BF; <br />
} <br />
.key_normal{ <br />
border-bottom:1px solid #8298BF; <br />
border-left:1px solid #8298BF; <br />
border-top:1px solid #8298BF; <br />
border-right:1px solid #8298BF; <br />
} <br />
<br />
#search_suggest{ <br />
margin:0; <br />
padding:0; <br />
width:300px; <br />
height:auto; <br />
border:1px solid black; <br />
} <br />
<br />
.suggest_hidden{ <br />
display:none; <br />
} <br />
.item_normal{ <br />
width:100%; <br />
overflow:hidden; <br />
padding-left:5px; <br />
padding-top:2px;} <br />
<br />
.item_high{ <br />
padding-left:5px; <br />
padding-top:2px; <br />
background-color:#326BC5; <br />
color:white;} <br />
<br />
</style> <br />
<script. type="text/javascript"> <br />
var array; <br />
var xhttp; <br />
var zz=-1; //此为指针 <br />
var textValue="";//定义一个全局变量,用于存放输入文本框中的内容,也可以放到一个隐藏的文本框中 <br />
<br />
//生成搜索提示框(或者称之为生成下拉列表) <br />
function buildList(){ <br />
document.getElementById("search_suggest").innerHTML="";//将空字符串赋值到搜索提示框中 <br />
for(var i=0;i<array.length;i++){ <br />
if(array!=""){ <br />
document.getElementById("search_suggest").innerHTML+="<div id='item" + i + "' class='item_normal' nmouseover='beMouseOver(" + i + ")' nclick='beClick(" + i + ")'>" + array[i] + "</div>";<br />
//alert("子节点长度:"+document.getElementById("search_suggest").childNodes.length);<br />
} <br />
}//for循环 <br />
}//函数 <br />
<br />
<br />
//函数鼠标经过时的效果 <br />
function beMouseOverEFF(i){ <br />
if ((i>=0)&(i<array.length)){ <br />
document.getElementById("item" + i).className="item_high"; <br />
} <br />
} <br />
<br />
//函数鼠标移开时的效果 <br />
function beMouseOutEFF(i){ <br />
if ((i>=0)&(i<array.length)){ <br />
document.getElementById("item" + i).className="item_normal"; <br />
} <br />
} <br />
<br />
//函数鼠标经过 ,i表示传递的行号,0表示第一行 <br />
function beMouseOver(i){ <br />
document.getElementById("key").focus(); <br />
beMouseOutEFF(zz); //鼠标移到该行的时候,先把之前所在的那一行的背景色还原,因为zz是全局变量,必然保存着之前所在的行号 <br />
zz=i; //把当前行号赋值给zz<br />
beMouseOverEFF(zz); //鼠标移到该行的时候,把当前行的背景色还原 <br />
} <br />
<br />
//函数鼠标移开 <br />
function beMouseOut(i){ <br />
} <br />
<br />
<br />
//函数单击 <br />
function beClick(i){ <br />
document.getElementById("key").value=array[i]; <br />
document.getElementById("key").className="key_normal"; <br />
document.getElementById("search_suggest").className="suggest_hidden"; <br />
document.getElementById("key").focus(); <br />
}<br />
//将搜索提示框隐藏 <br />
function beHidden(){<br />
document.getElementById("key").className="key_normal"; <br />
document.getElementById("search_suggest").className="suggest_hidden"; <br />
}<br />
//上下键时将改行赋值给搜索框 <br />
function beUpAndDown(i){ <br />
document.getElementById("key").value=array[i]; <br />
}<br />
<br />
//方向键接收函数,我们采用onkeydown方法 <br />
function beKeyDown(){ <br />
//按向下键 <br />
if (event.keyCode==40){<br />
if(zz == array.length-1){<br />
//最后一行的背景色还原 <br />
beMouseOutEFF(zz);<br />
//将zz复位 <br />
zz=-1;<br />
//将文本框中的内容复位 <br />
document.getElementById("key").value = textValue;<br />
}else if(-1<zz<array.length-1){ <br />
beMouseOutEFF(zz++); <br />
beMouseOverEFF(zz); <br />
//将该行的值赋值给搜索框,采用移动到某行就将该行的内容赋值到搜索框中 <br />
beUpAndDown(zz);<br />
}else if(zz==-1){<br />
//第一行的背景色改变同时将zz赋值为0<br />
beMouseOverEFF(++zz);<br />
<br />
//将第一行的内容赋值到搜索框中 <br />
beUpAndDown(zz);<br />
} <br />
} <br />
//按向上键 <br />
else if (event.keyCode==38){ <br />
if(zz == 0){<br />
//将第一行的背景色还原,同时将zz复位 <br />
beMouseOutEFF(zz--);<br />
//将文本框中的内容复位 <br />
document.getElementById("key").value = textValue;<br />
}else if (zz>0){ <br />
beMouseOutEFF(zz--); <br />
beMouseOverEFF(zz);<br />
//将该行的值赋值给搜索框,采用移动到某行就将该行的内容赋值到搜索框中 <br />
beUpAndDown(zz);<br />
} else if (zz == -1){<br />
//将最后一行的背景色改变 <br />
beMouseOverEFF(array.length-1);<br />
//将zz赋值为array.length-1<br />
zz = array.length-1;<br />
//将最后一行的内容赋值到搜索框中 <br />
beUpAndDown(zz);<br />
} <br />
} <br />
//按回车或者TAB <br />
//if (event.keyCode==13||event.keyCode==9){ <br />
//回车键的keyCode是13,TAB键的keyCode是9<br />
// if (zz!=-1){ <br />
// beClick(zz); <br />
// }else { <br />
// document.getElementById("search_button").focus(); <br />
// } <br />
//}<br />
//按回车 <br />
//if (event.keyCode==13){ <br />
// document.getElementById("search_button").submit(); <br />
//} <br />
}<br />
<br />
<br />
//按键抬起时间(beKeyUp事件)。与服务器通信 <br />
function beKeyUp(){ <br />
//alert(event.keycode);//测试按键的keyCode<br />
if(event.keyCode!=13&event.keyCode!=9&event.keyCode!=38&event.keyCode!=40){ <br />
//表示并不是按动上下键,将搜索框中的内容存放在textValue中 <br />
textValue = document.getElementById("key").value;<br />
//将zz复位 <br />
zz=-1;<br />
//如果搜索框中的内容去除了前后空格之后长度大于0,则通过ajax调用后台数据 <br />
<br />
//如果用户输入的时候仅仅是按空格键,该如何处理 <br />
if(window.ActiveXObject){<br />
//IE内核 <br />
//alert(document.getElementById("key").value.length);<br />
if (document.getElementById("key").value.length>0){ <br />
main(); <br />
}else{<br />
document.getElementById("key").focus();<br />
document.getElementById("key").className = "key_normal";<br />
} <br />
}else if(window.XMLHttpRequest){<br />
//火狐等其他内核 <br />
//alert(document.getElementById("key").value.length);<br />
if (document.getElementById("key").value.trim().length>0){ <br />
main(); <br />
}else{<br />
document.getElementById("key").className = "key_normal";<br />
document.getElementById("key").focus();<br />
}<br />
}<br />
} <br />
} <br />
<br />
<br />
//ajax与服务器通迅 <br />
function main(){ <br />
try{<br />
xhttp=new XMLHttpRequest();<br />
}catch(e){<br />
xhttp=new ActiveXObject("Microsoft.XMLHTTP");<br />
}<br />
xhttp.onreadystatechange=dowork; <br />
xhttp.open("POST", "Search", true); <br />
//设置要发送的数据的格式. <br />
xhttp.setRequestHeader("Content-Type","text/html;encoding=UTF-8"); <br />
//发送数据. <br />
var str = escape(document.getElementById('key').value); <br />
xhttp.send("str="+str+"&o=search"); <br />
} <br />
<br />
</p>
<p align="left"> function dowork() {<br />
array = new Array();//创建数组 <br />
if (xhttp.readyState == 4) {<br />
if (xhttp.status == 200) {<br />
str1 = xhttp.responseText.split("|");//xhttp.responseText值是1|2|3|4|5|,而str1的值是1,2,3,4,5, <br />
if (str1 != null && str1 != "") {<br />
//第一个for的目的是将array中内容置空,放置返回的信息长度比前一次返回的短,造成了部分信息不匹配,同时也有助于 <br />
for (i = 0; i < array.length; i++) {<br />
array = "";<br />
}<br />
//根据str1的长度,将str1中的内容放到array中 <br />
for (i = 0; i < str1.length; i++) {<br />
array = str1;<br />
}<br />
//如果array为空,不做操作处理;如果不为空,则生成提示框 <br />
if (array.length > 0) {<br />
buildList();//生成搜索提示框 <br />
document.getElementById("key").className = "key_abnormal";//设置搜索框的className为非正常状态(key_abnormal) <br />
document.getElementById("search_suggest").className = "search_suggest";//设置搜索提示框的className为search_suggest状态 (显示状态) <br />
}<br />
} else {<br />
document.getElementById("key").className = "key_normal";//设置搜索框的className为正常状态(key_normal) <br />
document.getElementById("search_suggest").className = "suggest_hidden";//设置搜索提示框的className为suggest_hidden状态 (隐藏状态) <br />
document.getElementById("key").focus();//focus()表示使得元素得到焦点并执行由 onfocus 事件指定的代码 <br />
}<br />
}<br />
}<br />
}</p>
<p align="left"> function beOnBlur() {</p>
<p align="left"> }<br />
</script> <br />
</head> <br />
<br />
<body nclick="beHidden()"> <br />
<div id="content"> <br />
<div id="search_input"> <br />
<!-- --><br />
<input id="key" type="text" name="key" class="key_normal" nkeydown="beKeyDown();" nkeyup="beKeyUp(event.keycode);" nblur="beOnBlur();" autocomplete="off"/> <br />
<input type="button" name="search_button" id="search_button" value="搜索/进入" /> <br />
</div> <br />
<div id="search_suggest" class="suggest_hidden"> </div> <br />
</div> <br />
<div id="ttt"></div> <br />
</body> </p>
</html>
</body>
</html>
TAG: