收录日期:2021/02/28 10:52:37 时间:2016/06/29 12:42:24 标签:Ajax
/********************************可配置选项********************************/ 
// 被选中的相似关键字背景颜色 
var selectedBgColor = "#008899"; 
// 未被选中的相似关键字背景颜色 
var unselectedBgColor = "#FFFFFF"; 
// 相似关键字列表框的边框 
var listBorder = "1 solid #000000";  
/***************************************************************************/  
  
/********************************不可配置选项********************************/ 

// 上一次输入的关键字(用来判断关键字是否有改变,没有则不再去服务端重新获取提示关键字) 
var oldKeyValue; 
// 鼠标相对于提示关键字列表框的位置(0:提示框外面,1:提示框里面) 
var mouseLocation = 0; 
// 当前选中的提示关键字索引(从0开始,等于-1表示没有被选中项) 
var selectedKeyIndex = -1;  
// 上一次选中的提示关键字索引(从0开始,等于-1表示没有上次被选中项) 
var oldSelectedKeyIndex = -1; 
// 提示关键字总数 
var tdCount = 0; 

/***************************************************************************/ 

   /* 
用途:给String对象添加去除左右空格方法 
*/  
String.prototype.trim = function() { 
  var m = this.match(/^\s*(\S+(\s+\S+)*)\s*$/); 
  return (m == null) ? "" : m[1]; 


/* 
用途:初始化提示关键字列表框的状态 
*/  
function initKeyListState(){ 
selectedKeyIndex = -1;  
    oldSelectedKeyIndex = -1; 
    tdCount = 0; 


/* 
用途:将上一次选中的关键字项变为未选中 
*/  
function disSelectedOldKey(){ 
       //判断说明:oldSelectedKeyIndex!=selectedKeyIndex 
       //        当只有一个相似关键字的时候,则不存在上一次选中和这次选中关键字, 
       //        只要第一次选中后,按向上或向下箭头都是选中。 
if (oldSelectedKeyIndex!=-1&&oldSelectedKeyIndex!=selectedKeyIndex){ 
   $('keyId'+ oldSelectedKeyIndex).bgColor=unselectedBgColor; 
   } 
   // 上一次选中项更新 
   oldSelectedKeyIndex = selectedKeyIndex; 


/* 
用途:当按上下箭头时选中新的提示关键字项,按回车时将选中的提示关键字输入到搜索框。 
*/  
function setSelectedKey(){ 
// $('keyId0')存在表示有相关提示关键字,不存在则不处理。 
if($('keyId0')){  
  if (event.keyCode==38){ 
    //------处理向上事件------ 
   if (selectedKeyIndex==-1){ 
   selectedKeyIndex = tdCount-1; 
   }else{ 
   selectedKeyIndex= (selectedKeyIndex+tdCount-1)%tdCount; 
   } 
   $('keyId'+ selectedKeyIndex).bgColor= selectedBgColor; 
   disSelectedOldKey(); 
  }else if (event.keyCode==40){ 
    //------处理向下事件------ 
   if (selectedKeyIndex==-1){ 
   selectedKeyIndex = 0; 
   }else{ 
   selectedKeyIndex = (selectedKeyIndex+1)%tdCount; 
   } 
   $('keyId'+ selectedKeyIndex).bgColor= selectedBgColor; 
   disSelectedOldKey(); 
  }else if (event.keyCode==13){ 
    //------处理回车事件------ 
   $('searchInput').value=$('keyId'+ selectedKeyIndex).innerText; 
   setCursorLast($('searchInput')); 
   // 隐藏提示关键字列表框 
   $('dropdownlistDiv').style.display='none'; 
  } 
  } 


/* 
用途:获取相似关键字 
*/  
function getConformKey(){ 
  var keyValue = $('searchInput').value.trim(); 
  // 如果这次的查询关键字和上次的一样,则不去服务器重新获取相似关键字列表。 
  if (keyValue!=oldKeyValue){ 
   // 关键字为空则不去服务器获取相似关键字列表 
   if (keyValue==''){ 
   DWRUtil.removeAllRows('showKeyList'); 
   setDropListVisible(false); 
   initKeyListState(); 
   }else{ 
   //采用ajax异步模式获取相似关键字 
   SearchBar.getKeyList(keyValue,conformKeyCallback); 
   } 
  } 


/* 
用途:获取关键字回调方法 
*/  
function conformKeyCallback(keyList){ 
DWRUtil.removeAllRows('showKeyList'); 
initKeyListState(); 
if (keyList.length>0){ 
// 生成相似关键字提示框 
DWRUtil.addRows('showKeyList',keyList,cellFuncs, {  
cellCreator:function(options) { 
  var td = document.createElement("td"); 
  td.id = 'keyId' + tdCount++; 
  td.onmouseover = function (){selectedKeyIndex=parseInt(this.id.substring(5,td.id.length));this.bgColor=selectedBgColor;disSelectedOldKey();}; 
  td.onclick= function (){ 
   $('searchInput').value=this.innerText; 
   $('searchInput').focus(); 
setCursorLast($('searchInput')); 
$('dropdownlistDiv').style.display='none'; 
  }; 
  return td; 
},escapeHtml:false}); 
setDropListVisible(true); 
}else{ 
setDropListVisible(false); 



/* 
用途:表格数据显示处理方法 
*/  
var cellFuncs = [ 
  function(data) { return data; } 
]; 

/* 
用途:将输入框的光标移到最后 
*/  
function setCursorLast(inputObj){ 
var inputRange = inputObj.createTextRange();   
inputRange.collapse(true); 
inputRange.moveStart('character',inputObj.value.length);  
inputRange.select(); 


/* 
用途:创建相似关键字列表框 
*/  
function createShowDiv(){ 
var showDiv = document.createElement("div"); 
showDiv.id = "dropdownlistDiv";    
with(showDiv.style){    
       position = "absolute";    
       left = parseInt($('searchInput').style.left.replace('px',''))+10;  
       top = parseInt($('searchInput').style.top.replace('px',''))+parseInt($('searchInput').style.height.replace('px',''))+16; 
       width = parseInt($('searchInput').style.width.replace('px',''));   
       border = listBorder;   
       zIndex = "1";    
       display='none'; 
       backgroundColor = unselectedBgColor;    
    } 
    showDiv.onmouseover=function (){mouseLocation=1;}; 
    showDiv.onmouseout=function (){mouseLocation=0;}; 
    showDiv.innerHTML = " <table border='0' style='width: 100%;font-size: 12;'> <tbody id='showKeyList' style='margin-left: 0;margin-right: 0;margin-bottom: 0;margin-top: 0;'> </tbody> </table>"; 
document.body.appendChild(showDiv); 
initKeyListState(); 
}   

/* 
用途:设置相似关键字列表框是否可见 
参数:isDisplay,true表示可见,false表示不可见 
*/  
function setDropListVisible(isDisplay){ 
if (mouseLocation == 1){ 
return; 

if (($('searchInput').value.trim()!='')&&(isDisplay==true)){ 
$('dropdownlistDiv').style.display=''; 

else{ 
$('dropdownlistDiv').style.display='none'; 



// 将创建相似关键字列表框方法附加到onload事件中 
if (window.addEventListener){ 
   window.addEventListener('load', createShowDiv, false); 
}else if (window.attachEvent){ 
   window.attachEvent('onload', createShowDiv); 

jsp文件: 
<%@ page language="java"  pageEncoding="GBK"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
   <head> 
     <title>test </title> 
     <script type="text/javascript" src=" <%=request.getContextPath()%>/js/util.js"> </script> 
<script type="text/javascript" src=" <%=request.getContextPath()%>/js/engine.js"> </script> 
<script type="text/javascript" src=" <%=request.getContextPath()%>/dwr/interface/SearchBar.js"> </script> 
<script type="text/javascript" src=" <%=request.getContextPath()%>/js/searchbar.js"> </script> 
   </head> 
   <body> 
   <input type="text" name="searchInput" AUTOCOMPLETE="off"  
onkeydown="oldKeyValue=this.value.trim();setSelectedKey();"  
onkeyup="getConformKey();"  
onfocus="setDropListVisible(true);"  
onblur="setDropListVisible(false);" 
style="width: 300; height: 23;z-index: 10;top:0;left:0;" /> 
   </body> 
</html> 

用firebug 页面一加载就出现这个错误,不知道为什么,我是看着别人做的!!在文本框里一写就报  error
$("searchInput") has no properties
createShowDiv()serch.js (line 166)
[Break on this error] top = parseInt($('searchInput').style.top.replace('px',''))+parseInt($('s...

我想找人做一个网站 关于C#构造函数的两个小问题 50分求 C#中不同权限用户登录后显示不同的操作界面 设计思路或者源代码参考学习!谢谢! 我的机子有点问题想问大哥大姐们!!!! upload_5xsoft.inc 出错 请教一个问题:本本的硬盘响声 OWC 组件在哪下载? 大雪纷飞,德州等车~~~~ 请赐教数据处理的问题一个!急!! 为什么从在WIN98下从SQL SERVER2000把数据导成DBF时,汉字全部变成乱码? TURBO C MOUSE 100分,求一正则问题,在线等, 可以挂在金碟K3系统下与K3系统同步运行的软件 ActiveX控件代码与网页代码之间的参数如何获取? 如何在EXECL单元格中比较 想找份PHP的工作,在深圳 在数据库中批量加入数据的问题 着急啊!!! 大家新年好啊,小弟有两个小问题请教各位,请进~~~~~~~~! 再求一SQL语句,谢谢! 如何用split拆分出来的数据分页显示? 在C#中如何在函数参数中返回结构数组? 心中的迷惑,望过来人指点迷津 刚从DW转到VS.net里面开发,向大家请教两个比较简单的问题!在线等!!! 我装的是ORACLE 8I 被我关闭了一下。再启动时就不行了.只是已启动,但不是打开状态,.急 求教,谢谢~~~`本人新手 关于软件注册 asp读取excel错误问题 csdn的blog是不是有问题呀?你发表了文章,别人怎么找到呢? 请问怎么实现这个功能?自定义的自增量 什么是收发器?它的作用是什么?我在网上搜不到,谢谢大家了!!!