可编辑下拉框的2种实现方式
<divstyle="position:relative;">
<selectstyle="width:120px;"onchange="document.getElementById('input').value=this.value">
<optionvalue="A类">A类</option>
<optionvalue="B类">B类</option>
<optionvalue="C类">C类</option>
<optionvalue="D类">D类</option>
</select>
<inputid="input"name="input"style="position:absolute;width:99px;height:16px;left:1px;top:2px;border-bottom:0px;border-right:0px;border-left:0px;border-top:0px;">
</div>
可编辑下拉框-JS
<html>
<head>
<metaname="GENERATOR"content="MicrosoftFrontPage5.0">
<metaname="ProgId"content="FrontPage.Editor.Document">
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>可编辑下拉框</title>
</head>
<body>
<tablestyle="border:2pxoutset;background-color:#d2e8FF"width="250"height="100"align="center">
<tr>
<tdwidth="60%"height="30"align="center">
<selectname="fason">
<optionvalue="可编辑下拉框">可编辑下拉框</option>
<optionvalue="作者">作者</option>
</select>
</td>
</tr>
</table>
<scriptlanguage="javascript">
functioncombox(obj,select){
this.obj=obj
this.name=select;
this.select=document.getElementsByName(select)[0];
/*要转换的下拉框*/
}
/*初始化对象*/
combox.prototype.init=function(){
varinputbox="<inputname='combox_"+this.name+"'onchange='"+this.obj+".find()'"
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"
clip="rect(0"+(this.select.offsetWidth)+""+this.select.offsetHeight+""+(this.select.offsetWidth-18)+")"
/*切割下拉框*/
}
this.select.onchange=newFunction(this.obj+".change()")
this.change()
}
/*初始化结束*/
////////对象事件定义///////
combox.prototype.find=function(){
/*当搜索到输入框的值时,下拉框自动定位*/
varinputbox=document.getElementsByName("combox_"+this.name)[0]
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事件*/
varinputbox=document.getElementsByName("combox_"+this.name)[0]
inputbox.value=this.select.options[this.select.selectedIndex].text;
with(inputbox){select();focus()};
}
////////对象事件结束///////
/*公用定位函数(获取控件绝对坐标)*/
functiongetL(e){
varl=e.offsetLeft;
while(e=e.offsetParent)l+=e.offsetLeft;
returnl
}
functiongetT(e){
vart=e.offsetTop;
while(e=e.offsetParent)t+=e.offsetTop;
returnt
}
/*结束*/
</script>
<scriptlanguage="javascript">
vara=newcombox("a","fason")
a.init()
</script>
</body>
</html>