可输入下拉框的实现。

转载至 CSDN 论坛回答。

 

<html>
<head>
    <title>可输入下拉框</title>
</head>
<script language="javascript">
function   combox(obj,select){ 
  this.obj=obj 
  this.id=select; 
  this.select=document.getElementById(select); 
  /*要转换的下拉框*/ 
  } 
  
  /*初始化对象*/ 
  combox.prototype.init=function(){ 
  var   inputbox="<input   id='combox_"+this.id+"'   name='combox_"+this.name+"'   οnchange='"+this.obj+".find()'   οnblur='"+this.obj+".addItem(this.value)'   " 
  inputbox+="style='position:absolute;width:"+(this.select.offsetWidth-16)+";height:"+this.select.offsetHeight+";left:"+getL(this.select)+";top:"+getT(this.select)+"'>" 
  document.write(inputbox) 
  with(this.select.style){ 
  left=getL(this.select) 
  top=getT(this.select) 
  position="absolute" 
  width=this.select.offsetWidth 
  height=this.select.offsetHeight 
  clip="rect(0   "+(this.select.offsetWidth)+"   "+this.select.offsetHeight+"   "+(this.select.offsetWidth-18)+")" 
  /*切割下拉框*/ 
  } 
  this.select.οnchange=new   Function(this.obj+".change()") 
  this.select.οnresize=new   Function(this.obj+".resize()") 
  this.change() 
  
  } 
  
  window:οnresize=function(){location.reload()} 
  /*初始化结束*/ 
  
  
  
  对象事件定义/// 
  
  combox.prototype.find=function(){ 
  /*当搜索到输入框的值时,下拉框自动定位*/ 
  var   inputbox=document.getElementById("combox_"+this.id) 
  with(this.select){ 
  for(i=0;i<options.length;i++) 
  if(options[i].text.indexOf(inputbox.value)==0){ 
  selectedIndex=i 
  this.change(); 
  break; 
  } 
  } 
  } 
  
  combox.prototype.change=function(){ 
  /*定义下拉框的onchange事件*/ 
  var   inputbox=document.getElementById("combox_"+this.id) 
  inputbox.value=this.select.options[this.select.selectedIndex].text; 
  with(inputbox){select();focus()}; 
  } 
  
  combox.prototype.addItem=function(str){ 
  var   findText=false 
  for(i=0;i<this.select.length;i++)if(this.select.options[i].text.indexOf(str)==0){findText=true;break} 
  if(!findText){ 
  this.select.options[this.select.length]=new   Option(str,str) 
  this.select.value=str 
  } 
  } 
  
  对象事件结束/// 
  
  /*公用定位函数(获取控件绝对坐标)*/ 
  function   getL(e){ 
  var   l=e.offsetLeft; 
  while(e=e.offsetParent)l+=e.offsetLeft; 
  return   l 
  } 
  function   getT(e){ 
  var   t=e.offsetTop; 
  while(e=e.offsetParent)t+=e.offsetTop; 
  return   t 
  }  
</script>
<body>

    <select   name="test"   id="fason1"> 
          <option   value='1111'>中国</option> 
          <option   value='22222'>哈萨克斯坦</option>
          <option   value='3333'>伊朗</option>
          <option   value='444'>中华人民共和国</option>
    </select> 
  <script   language="javascript"   src="select.js"></script> 
  <script   language="javascript"> 
  var   a=new   combox("a","fason1") 
  a.init() 
  /*var   b=new   combox("b","fason2") 
  b.init() 
  作用方法: 
  var   obj=new   combox(var1,var2) 
  var1:新生成的combox变量(如:a) 
  var2:原下拉框的name 
  obj.init():对象初始化 
  注意:后台取值时用combox_var2进行取值 
  */ 
  </script>  
</body>
</html>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值