这是模糊查询的JSvar AC_TAB = 9;   // make the selection
 var AC_ENTER = 13;   // make the selection
 var AC_UP_ARROW = 38;    // move the drop down list selection up by one
 var AC_DOWN_ARROW = 40;  // move the drop down list selection down by one
 var theListDiv;
 var theListArray;
 var theComboxObj;
 onload=OnLoad
 function OnLoad()
 {
  setTimeout("Initialize()", 100);
 }
 function Initialize()
 {
   AddListDivFun(document.all.tofield); 
   //AddListDivFun(document.all.ccfield); 
 }
 
 function AddListDivFun(obj)
 {
  theListArray=eval(obj.id+"ListArray");
  var tempStr=new Array();
  var tempI=0;
  tempStr[tempI++]='<DIV style="position:relative;visibility:hidden">'
    +'<DIV class=ac_menu id="'+obj.id+'ListDiv" style="FONT-SIZE: 0.9em; Z-INDEX: 1; visibility:hidden; POSITION: absolute;OVERFLOW-Y:auto; WIDTH:'+obj.offsetWidth+'; " '
    +'onmouseover="mouseOverListDivFun(event)" onmouseout="mouseOutListDivFun(event);" onmousedown="mouseDownListDivFun(event);" onscroll="scrollListDivFun();">';
  tempStr[tempI++]="</DIV></DIV>";
  obj.insertAdjacentHTML("afterEnd",tempStr.join(""));
  theListDiv=eval(obj.id+"ListDiv");
  obj.onfocus=AC_OnFocus;
  obj.onblur=AC_OnBlur;
  obj.onkeydown=AC_OnKeyDown;
  obj.autoComplete="off";
  obj.onpropertychange=AC_OnPropertyChange;
 }
 
 function AC_OnFocus(obj)
 {
  if(obj==null) obj=event.srcElement;
  theListDiv=eval(obj.id+"ListDiv");
  theListArray=eval(obj.id+"ListArray");
  theComboxObj=obj;
  theListDiv.style.visibility="visible";
  //adjustListDivScroll();
 }
 
 function AC_OnBlur(obj)
 {
  if(obj==null) obj=event.srcElement;
  if(theListDiv.contains(document.activeElement)) obj.focus();
  else theListDiv.style.visibility="hidden";
 }
 
 function AC_OnPropertyChange(obj)
 {
  if(obj==null) obj=event.srcElement;
  theListDiv=eval(obj.id+"ListDiv");
  if(theListDiv==null) return ;
  theListArray=eval(obj.id+"ListArray");
  var objValue=obj.value;
  if(objValue.length==0){
   theListDiv.innerHTML="";
   theListDiv.selectedIndex=-1;
   theListDiv.selectedItemIndex=-1;
   return;  
  }
  var objValueHtml=htmlEncode(objValue);
  theListDiv.selectedIndex=-1;
  var theLastVisibleIndex=0
  var tempStr=new Array();
  var numOfVisibleItems=0;
  for(theLastVisibleIndex=0;theLastVisibleIndex<theListArray.length;theLastVisibleIndex++)
  {
   if(theListArray[theLastVisibleIndex].indexOf(objValue)==0)
   {
    if(numOfVisibleItems==13){
     tempStr[numOfVisibleItems]="<DIV class=ac_menuitem  value="+theLastVisibleIndex+" id=virtualMoreItems itemIndex="+numOfVisibleItems+"><b>...More...</b></DIV>";
     numOfVisibleItems++;
     break;
    }
    else{
     tempStr[numOfVisibleItems]="<DIV class=ac_menuitem  value="+theLastVisibleIndex+" itemIndex="+numOfVisibleItems+"><b>"+objValueHtml+"</b>"+htmlEncode(theListArray[theLastVisibleIndex].substr(objValue.length))+"</DIV>";
     numOfVisibleItems++;
    }
   }
  }
  theListDiv.innerHTML=tempStr.join("");
  if(numOfVisibleItems>0) 
  {
   theListDiv.selectedIndex=theListDiv.children[0].value;
   theListDiv.selectedItemIndex=0;
   theListDiv.children[0].className="ac_menuitem_selected";
   adjustListDivScroll();
  }
  else{
   theListDiv.selectedIndex=-1;
   theListDiv.selectedItemIndex=-1; 
  }
 }
 
 function AC_OnKeyDown(obj)
 {
  if(theListDiv==null) return ;
  if(obj==null) obj=event.srcElement;
  var keyCode=event.keyCode;
  if(keyCode==AC_ENTER) keyCode=event.keyCode=AC_TAB;
  if(keyCode==AC_TAB && theListDiv.selectedIndex!=-1) 
  {
   if(obj.value!=theListArray[theListDiv.selectedIndex]) obj.value=theListArray[theListDiv.selectedIndex];
   return ;
  }
  
  if(keyCode==AC_UP_ARROW && theListDiv.selectedItemIndex>0)
  {
   theListDiv.children[theListDiv.selectedItemIndex].className="ac_menuitem";
   theListDiv.selectedItemIndex=theListDiv.selectedItemIndex*1-1;
   theListDiv.selectedIndex=theListDiv.children[theListDiv.selectedItemIndex].value;
   theListDiv.children[theListDiv.selectedItemIndex].className="ac_menuitem_selected";
   adjustListDivScroll();
  }
 
  if(keyCode==AC_DOWN_ARROW && theListDiv.selectedItemIndex<theListDiv.children.length-1)
  {
   theListDiv.children[theListDiv.selectedItemIndex].className="ac_menuitem";
   theListDiv.selectedItemIndex=theListDiv.selectedItemIndex*1+1;
   theListDiv.selectedIndex=theListDiv.children[theListDiv.selectedItemIndex];
   theListDiv.children[theListDiv.selectedItemIndex].className="ac_menuitem_selected";
   adjustListDivScroll();
  }
 
 }
 
 function htmlEncode(str)
 {
  if(str==null) return "";
  str=str.replace(/</ig,"&lt;")
  str=str.replace(/>/ig,"&gt;");
  str=str.replace(/"/ig,"&quot;");
  return str;
 }
 
 function scrollListDivFun()
 {
  var virtualMoreItemsObj=theListDiv.children["virtualMoreItems"];
  if(virtualMoreItemsObj==null) return;
  var theLastVisibleIndex=virtualMoreItemsObj.value*1;
  var objValue=theComboxObj.value;
  var objValueHtml=htmlEncode(objValue);
  var tempStr=new Array();
  var numOfVisibleItems=virtualMoreItemsObj.itemIndex*1;
  for(;theLastVisibleIndex<theListArray.length;theLastVisibleIndex++)
  {
   if(theListArray[theLastVisibleIndex].indexOf(objValue)==0)
   {
    if(numOfVisibleItems==203){
     tempStr[numOfVisibleItems]="<DIV class=ac_menuitem  value="+theLastVisibleIndex+" itemIndex="+numOfVisibleItems+" onmousedown='replaceThisWithAllLeftItems(this);'><b>...Click to show all items...</b></DIV>";
     numOfVisibleItems++;
     break;
    }
    else{
     tempStr[numOfVisibleItems]="<DIV class=ac_menuitem  value="+theLastVisibleIndex+" itemIndex="+numOfVisibleItems+"><b>"+objValueHtml+"</b>"+htmlEncode(theListArray[theLastVisibleIndex].substr(objValue.length))+"</DIV>";
     numOfVisibleItems++;
    }
   }
  }
  virtualMoreItemsObj.outerHTML=tempStr.join("");
 }
 
 function replaceThisWithAllLeftItems(obj)
 {
  var virtualMoreItemsObj=obj;
  if(virtualMoreItemsObj==null) return;
  var theLastVisibleIndex=virtualMoreItemsObj.value*1;
  var objValue=theComboxObj.value;
  var objValueHtml=htmlEncode(objValue);
  var tempStr=new Array();
  var numOfVisibleItems=virtualMoreItemsObj.itemIndex*1;;
  for(;theLastVisibleIndex<theListArray.length;theLastVisibleIndex++)
  {
   if(theListArray[theLastVisibleIndex].indexOf(objValue)==0)
   {
    tempStr[numOfVisibleItems]="<DIV class=ac_menuitem  value="+theLastVisibleIndex+" itemIndex="+numOfVisibleItems+"><b>"+objValueHtml+"</b>"+htmlEncode(theListArray[theLastVisibleIndex].substr(objValue.length))+"</DIV>";
    numOfVisibleItems++;
   }
  }
  virtualMoreItemsObj.outerHTML=tempStr.join("");
  event.cancelBubble=true;
 }
 
 
 function mouseOverListDivFun(event)
 {
  if(event.toElement!=theListDiv) event.toElement.style.backgroundColor="#E6E6E6";
 }
 
 function mouseOutListDivFun(event)
 {
  if(event.fromElement!=theListDiv) event.fromElement.style.backgroundColor="";
 }
 
 function mouseDownListDivFun(event)
 {
  var selectedStr="";
  if(event.srcElement==theListDiv) return;
  else if(event.srcElement.tagName=="B") selectedStr=theListArray[event.srcElement.parentElement.value] ;
  else selectedStr=theListArray[event.srcElement.value];
  if(theComboxObj.value!=selectedStr)theComboxObj.value=selectedStr;
  theComboxObj.blur();
 }
 function adjustListDivScroll()
 {
  if ( theListDiv==null || theListDiv.selectedItemIndex==-1 || theListDiv.children.length==0 ) return ;
  var i=theListDiv.selectedItemIndex;
  if((theListDiv.children[i].offsetTop<theListDiv.scrollTop)||(theListDiv.children[i].offsetTop>theListDiv.scrollTop+200))
   theListDiv.children[i].scrollIntoView();
 }