搜索提示

上一篇 / 下一篇  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>

<body>
<p align="left">&lt;style. type=&quot;text/css&quot;&gt; <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 />
  &lt;/style&gt; <br />
  &lt;script. type=&quot;text/javascript&quot;&gt; <br />
  var array; <br />
  var xhttp; <br />
  var zz=-1; //此为指针 <br />
  var  textValue=&quot;&quot;;//定义一个全局变量,用于存放输入文本框中的内容,也可以放到一个隐藏的文本框中 <br />
  <br />
  //生成搜索提示框(或者称之为生成下拉列表) <br />
  function  buildList(){ <br />
  document.getElementById(&quot;search_suggest&quot;).innerHTML=&quot;&quot;;//将空字符串赋值到搜索提示框中 <br />
  for(var  i=0;i&lt;array.length;i++){ <br />
  if(array!=&quot;&quot;){ <br />
  document.getElementById(&quot;search_suggest&quot;).innerHTML+=&quot;&lt;div  id='item&quot; + i + &quot;' class='item_normal'  nmouseover='beMouseOver(&quot; + i + &quot;)' nclick='beClick(&quot; + i +  &quot;)'&gt;&quot; + array[i] + &quot;&lt;/div&gt;&quot;;<br />
  //alert(&quot;子节点长度:&quot;+document.getElementById(&quot;search_suggest&quot;).childNodes.length);<br />
  } <br />
  }//for循环 <br />
  }//函数 <br />
  <br />
  <br />
  //函数鼠标经过时的效果 <br />
  function  beMouseOverEFF(i){ <br />
  if  ((i&gt;=0)&amp;(i&lt;array.length)){ <br />
  document.getElementById(&quot;item&quot; + i).className=&quot;item_high&quot;; <br />
  } <br />
  } <br />
  <br />
  //函数鼠标移开时的效果 <br />
  function  beMouseOutEFF(i){ <br />
  if  ((i&gt;=0)&amp;(i&lt;array.length)){ <br />
  document.getElementById(&quot;item&quot; +  i).className=&quot;item_normal&quot;; <br />
  } <br />
  } <br />
  <br />
  //函数鼠标经过 ,i表示传递的行号,0表示第一行 <br />
  function  beMouseOver(i){ <br />
  document.getElementById(&quot;key&quot;).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(&quot;key&quot;).value=array[i]; <br />
  document.getElementById(&quot;key&quot;).className=&quot;key_normal&quot;; <br />
  document.getElementById(&quot;search_suggest&quot;).className=&quot;suggest_hidden&quot;; <br />
  document.getElementById(&quot;key&quot;).focus(); <br />
  }<br />
  //将搜索提示框隐藏 <br />
  function  beHidden(){<br />
  document.getElementById(&quot;key&quot;).className=&quot;key_normal&quot;; <br />
  document.getElementById(&quot;search_suggest&quot;).className=&quot;suggest_hidden&quot;; <br />
  }<br />
  //上下键时将改行赋值给搜索框 <br />
  function  beUpAndDown(i){ <br />
  document.getElementById(&quot;key&quot;).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(&quot;key&quot;).value  = textValue;<br />
  }else  if(-1&lt;zz&lt;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(&quot;key&quot;).value  = textValue;<br />
  }else  if (zz&gt;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(&quot;search_button&quot;).focus(); <br />
  //    } <br />
  //}<br />
  //按回车 <br />
  //if  (event.keyCode==13){ <br />
  //    document.getElementById(&quot;search_button&quot;).submit(); <br />
  //} <br />
  }<br />
  <br />
  <br />
  //按键抬起时间(beKeyUp事件)。与服务器通信 <br />
  function  beKeyUp(){   <br />
  //alert(event.keycode);//测试按键的keyCode<br />
  if(event.keyCode!=13&amp;event.keyCode!=9&amp;event.keyCode!=38&amp;event.keyCode!=40){ <br />
  //表示并不是按动上下键,将搜索框中的内容存放在textValue中 <br />
  textValue = document.getElementById(&quot;key&quot;).value;<br />
  //将zz复位 <br />
  zz=-1;<br />
  //如果搜索框中的内容去除了前后空格之后长度大于0,则通过ajax调用后台数据 <br />
  <br />
  //如果用户输入的时候仅仅是按空格键,该如何处理 <br />
  if(window.ActiveXObject){<br />
  //IE内核 <br />
  //alert(document.getElementById(&quot;key&quot;).value.length);<br />
  if  (document.getElementById(&quot;key&quot;).value.length&gt;0){ <br />
  main(); <br />
  }else{<br />
  document.getElementById(&quot;key&quot;).focus();<br />
  document.getElementById(&quot;key&quot;).className  = &quot;key_normal&quot;;<br />
  } <br />
  }else if(window.XMLHttpRequest){<br />
  //火狐等其他内核 <br />
  //alert(document.getElementById(&quot;key&quot;).value.length);<br />
  if  (document.getElementById(&quot;key&quot;).value.trim().length&gt;0){ <br />
  main(); <br />
  }else{<br />
  document.getElementById(&quot;key&quot;).className  = &quot;key_normal&quot;;<br />
  document.getElementById(&quot;key&quot;).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(&quot;Microsoft.XMLHTTP&quot;);<br />
  }<br />
  xhttp.onreadystatechange=dowork; <br />
  xhttp.open(&quot;POST&quot;, &quot;Search&quot;, true); <br />
  //设置要发送的数据的格式. <br />
  xhttp.setRequestHeader(&quot;Content-Type&quot;,&quot;text/html;encoding=UTF-8&quot;); <br />
  //发送数据. <br />
  var str =  escape(document.getElementById('key').value);   <br />
  xhttp.send(&quot;str=&quot;+str+&quot;&amp;o=search&quot;); <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(&quot;|&quot;);//xhttp.responseText值是1|2|3|4|5|,而str1的值是1,2,3,4,5, <br />
  if  (str1 != null &amp;&amp; str1 != &quot;&quot;) {<br />
  //第一个for的目的是将array中内容置空,放置返回的信息长度比前一次返回的短,造成了部分信息不匹配,同时也有助于 <br />
  for  (i = 0; i &lt; array.length; i++) {<br />
  array  = &quot;&quot;;<br />
  }<br />
  //根据str1的长度,将str1中的内容放到array中 <br />
  for  (i = 0; i &lt; str1.length; i++) {<br />
  array  = str1;<br />
  }<br />
  //如果array为空,不做操作处理;如果不为空,则生成提示框 <br />
  if  (array.length &gt; 0) {<br />
  buildList();//生成搜索提示框 <br />
  document.getElementById(&quot;key&quot;).className  = &quot;key_abnormal&quot;;//设置搜索框的className为非正常状态(key_abnormal) <br />
  document.getElementById(&quot;search_suggest&quot;).className  = &quot;search_suggest&quot;;//设置搜索提示框的className为search_suggest状态 (显示状态) <br />
  }<br />
  }  else {<br />
  document.getElementById(&quot;key&quot;).className  = &quot;key_normal&quot;;//设置搜索框的className为正常状态(key_normal) <br />
  document.getElementById(&quot;search_suggest&quot;).className  = &quot;suggest_hidden&quot;;//设置搜索提示框的className为suggest_hidden状态 (隐藏状态) <br />
  document.getElementById(&quot;key&quot;).focus();//focus()表示使得元素得到焦点并执行由 onfocus 事件指定的代码 <br />
  }<br />
  }<br />
  }<br />
  }</p>
<p align="left">         function  beOnBlur() {</p>
<p align="left">         }<br />
  &lt;/script&gt; <br />
  &lt;/head&gt; <br />
  <br />
  &lt;body  nclick=&quot;beHidden()&quot;&gt; <br />
  &lt;div  id=&quot;content&quot;&gt; <br />
  &lt;div  id=&quot;search_input&quot;&gt; <br />
  &lt;!--  --&gt;<br />
  &lt;input  id=&quot;key&quot; type=&quot;text&quot; name=&quot;key&quot;  class=&quot;key_normal&quot; nkeydown=&quot;beKeyDown();&quot;  nkeyup=&quot;beKeyUp(event.keycode);&quot; nblur=&quot;beOnBlur();&quot;  autocomplete=&quot;off&quot;/&gt; <br />
  &lt;input  type=&quot;button&quot; name=&quot;search_button&quot;  id=&quot;search_button&quot; value=&quot;搜索/进入&quot; /&gt; <br />
  &lt;/div&gt; <br />
  &lt;div id=&quot;search_suggest&quot;  class=&quot;suggest_hidden&quot;&gt; &lt;/div&gt; <br />
  &lt;/div&gt; <br />
  &lt;div  id=&quot;ttt&quot;&gt;&lt;/div&gt;     <br />
  &lt;/body&gt; </p>
&lt;/html&gt;
</body>
</html>

TAG:

 

评分:0

我来说两句

日历

« 2024-05-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 19700
  • 日志数: 29
  • 建立时间: 2013-03-21
  • 更新时间: 2013-03-22

RSS订阅

Open Toolbar