自由人

对你残酷的人就是你的恩人......
一个有用的Javascript,onkeydown and Option selected(转)

一个有用的Javascript,onkeydown and Option selected人提出的要求,我在网上找的代码,改了一下,FF和IE都支持
这个脚本的用处就是你在input 输入框里面输入英文字母(比如D)的时候,旁边的SELECT里面有相应这个字母D开头的就会标蓝选中,如果是单选就会出现在最上面,可以应用在邮件系统里面的输入邮件地址那里。

<script type="text/JavaScript">
function smartOptionFinder(oSelect, oEvent) {
 var sKeyCode = oEvent.keyCode;
 var sToChar = String.fromCharCode(sKeyCode);
 if(sKeyCode >47 && sKeyCode<91){
  var sNow = new Date().getTime();
  if (oSelect.getAttribute("finder") == null) {
   oSelect.setAttribute("finder", sToChar.toUpperCase())
   oSelect.setAttribute("timer", sNow)
  } else if( sNow > parseInt(oSelect.getAttribute("timer"))+2000) { //Rest all;
   oSelect.setAttribute("finder", sToChar.toUpperCase())
   oSelect.setAttribute("timer", sNow) //reset timer;
  } else {
   oSelect.setAttribute("finder", oSelect.getAttribute("finder")+sToChar.toUpperCase())
   oSelect.setAttribute("timer", sNow); //update timer;
  }
  var sFinder =  oSelect.getAttribute("finder");
  var arrOpt = oSelect.options
  var iLen = arrOpt.length
  for (var i = 0; i < iLen ; i++) {
   sTest  = arrOpt[i].text
   if (sTest.toUpperCase().indexOf(sFinder) == 0) {
    arrOpt[i].selected = true;
    break;
   }
  }
  
 } else{
  
 }
}
</script>
<form name=formName id="formName">
<select name="userid"   style="width:140px;height:90px" multiple >
<OPTION VALUE="George">George</OPTION>
  <OPTION VALUE="Fred">Fred</OPTION>
  <OPTION VALUE="Ryan">Ryan</OPTION>
  <OPTION VALUE="Angela">Angela</OPTION>
  <OPTION VALUE="Jill">Jill</OPTION>
  <OPTION VALUE="Fred">Fred</OPTION>
  <OPTION VALUE="Ryan">Ryan</OPTION>
  <OPTION VALUE="Angela">Angela</OPTION>
  <OPTION VALUE="Jill">Jill</OPTION>
  <OPTION VALUE="Fred">Fred</OPTION>
  <OPTION VALUE="Ryan">Ryan</OPTION>
  <OPTION VALUE="Angela">Angela</OPTION>
  <OPTION VALUE="Jill">qwill</OPTION>
</select>
<input type="text" onkeydown="smartOptionFinder(document.forms.formName.userid,event);" >
</form>

 

posted on 2005-09-08 14:34  rudyshen  阅读(2910)  评论(0编辑  收藏  举报