用JS对下拉菜单进行搜索提示

看如下的例子:
先加载两个js文件:
<script  language="JavaScript" src="../../js/searchhelp.js"></script>
<script language="JavaScript" src="../../js/searchopen.js"></script>
在在复选框中进行调用:
<select name="i_pbedu" size="1" id="select9" style="width:80" οnmοuseοver="selMouseOver(this)" οnmοuseοut="selMouseOut(this)" οnfοcus="catch_focus(this)" οnkeypress="catch_press(this)" οnkeydοwn="catch_keydown(this)">
  <%=FetchItem.fetchSelectItem("edu","3")%> </select>


searchhelp.js文件为:

//定义 select 原值
var oldValue=""
var oldText="";
var searchtype="1";

//select下拉框的onkeypress事件,定位下拉框的值
function catch_press(sel){

 if(sel.selectedIndex>=0){
  var s=String.fromCharCode(event.keyCode);
  oldValue=oldValue+s;
  oldText=oldText+s;
 
  event.returnValue = false;
  if (!event.returnValue && sel.onchange)
  sel.onchange(sel)
 }
 
 /*if(searchtype=="0")
  searchoptiontext(sel);
 else
  searchoptionvalue(sel);
 selMouseOver();
 */
 
 if(searchoptiontext(sel)){selMouseOver();return true;}
 else {searchoptionvalue(sel);selMouseOver();}
}

//通过text描述定位
function searchoptionvalue(obj){
  if(obj){
   var invalue=oldValue;
   var selectlength=obj.options.length
   for(var i=0;i<selectlength;i++){
    var temp=obj.options[i].value
     if(temp==invalue){
     obj.selectedIndex=i
     obj.focus()
     //break;
     return true;
    }  
   }
  }
  return false;
 }
 //通过值value定位
function searchoptiontext(obj){
  if(obj){
   var invalue=oldText;
   var selectlength=obj.options.length
   for(var i=0;i<selectlength;i++){
    var temp=obj.options[i].text
    //alert(temp.indexOf(invalue))
     if(temp.indexOf(invalue)!=-1){
     obj.selectedIndex=i
     obj.focus()
     //break;
     return true;
    }  
   }
  }
  return false;
 }


//select下拉框的onfocus事件,清空保存的值
function catch_focus(sel) {
 oldText ="";
 oldValue ="";
}

//select下拉框的onkeydown事件,修改下拉框的值
function catch_keydown(sel)
{
 switch(event.keyCode)
 {
  case 13: //回车键
   catch_focus(sel)
   event.returnValue = false;
   break;
  case 27: //Esc键
   catch_focus(sel)
   event.returnValue = false;
   break;
  case 8:  //空格健
   var s = "";
   if(searchtype=="1"){
     s=oldText;
     s = s.substr(0,s.length-1);
     oldText=s;
   }else{
     s=oldValue;
     s = s.substr(0,s.length-1);
     oldValue=s;
   } 
   selMouseOver(sel);
   event.returnValue = false;
   break;
 }
 if (!event.returnValue && sel.onchange)
  sel.onchange(sel)
}


function selMouseOver(obj)
{
   var innerText ="<font  style=/"FONT-SIZE: 12px;color:red;line-height: 20px;/" >&nbsp;提示信息:<br>&nbsp;你输入了:"+ oldText+"<br><重新选择该列表将清空该值!></font>"
   Composition.document.body.innerHTML = " "+innerText+" "
   document.all.div_hint.style.display = "block";
   document.all.div_hint.style.left = event.clientX + 20;
   document.all.div_hint.style.top = event.clientY+20;
}


/*
function selMouseOver(obj)
{
 with (document.all.div_hint)
 {
  innerText ="提示信息:/r/n 你输入了:"+ oldText+"/r/n <重新选择该列表将清空该值!>";
  //obj.options[obj.selectedIndex].text;
  if (innerText.length > 0)
  {
   innerText = " " + innerText + "  ";
   style.display = "block";
   style.left = event.clientX + 25;
   style.top = event.clientY+25;
  }
 }
}*/


//select 选择框鼠标移开时消失
function selMouseOut(obj)
{
 with (document.all.div_hint)
 {
  style.display = "none"
 }

}


searchopen.js文件为:

function opensearchwin(path)
{
 window.open (path, '', 'height=500, width=600,  top=20, left=100, toolbar=no, menubar=no, scrollbars=yes,resizable=yes,location=no, status=no')
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值