可編輯下拉框的2種實(shí)現(xiàn)方式
更新時(shí)間:2014年06月13日 09:20:03 投稿:whsnow
下拉框想必大家都有見過(guò),可編輯的下拉框就不多見了吧,本例為大家介紹個(gè)不錯(cuò)的實(shí)現(xiàn)方法,需要的朋友可以參考下
可編輯下拉框-HTML
<div style="position:relative;">
<select style="width:120px;" onchange="document.getElementById('input').value=this.value">
<option value="A類">A類</option>
<option value="B類">B類</option>
<option value="C類">C類</option>
<option value="D類">D類</option>
</select>
<input id="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>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>可編輯下拉框</title>
</head>
<body>
<table style="border:2px outset;background-color:#d2e8FF" width="250" height="100" align="center">
<tr>
<td width="60%" height="30" align="center">
<select name="fason">
<option value="可編輯下拉框">可編輯下拉框</option>
<option value="作者">作者</option>
</select>
</td>
</tr>
</table>
<script language="javascript">
function combox(obj,select){
this.obj=obj
this.name=select;
this.select=document.getElementsByName(select)[0];
/*要轉(zhuǎn)換的下拉框*/
}
/*初始化對(duì)象*/
combox.prototype.init=function(){
var inputbox="<input name='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=new Function(this.obj+".change()")
this.change()
}
/*初始化結(jié)束*/
////////對(duì)象事件定義///////
combox.prototype.find=function(){
/*當(dāng)搜索到輸入框的值時(shí),下拉框自動(dòng)定位*/
var inputbox=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事件*/
var inputbox=document.getElementsByName("combox_"+this.name)[0]
inputbox.value=this.select.options[this.select.selectedIndex].text;
with(inputbox){select();focus()};
}
////////對(duì)象事件結(jié)束///////
/*公用定位函數(shù)(獲取控件絕對(duì)坐標(biāo))*/
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
}
/*結(jié)束*/
</script>
<script language="javascript">
var a=new combox("a","fason")
a.init()
</script>
</body>
</html>
復(fù)制代碼 代碼如下:
<div style="position:relative;">
<select style="width:120px;" onchange="document.getElementById('input').value=this.value">
<option value="A類">A類</option>
<option value="B類">B類</option>
<option value="C類">C類</option>
<option value="D類">D類</option>
</select>
<input id="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
復(fù)制代碼 代碼如下:
<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>可編輯下拉框</title>
</head>
<body>
<table style="border:2px outset;background-color:#d2e8FF" width="250" height="100" align="center">
<tr>
<td width="60%" height="30" align="center">
<select name="fason">
<option value="可編輯下拉框">可編輯下拉框</option>
<option value="作者">作者</option>
</select>
</td>
</tr>
</table>
<script language="javascript">
function combox(obj,select){
this.obj=obj
this.name=select;
this.select=document.getElementsByName(select)[0];
/*要轉(zhuǎn)換的下拉框*/
}
/*初始化對(duì)象*/
combox.prototype.init=function(){
var inputbox="<input name='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=new Function(this.obj+".change()")
this.change()
}
/*初始化結(jié)束*/
////////對(duì)象事件定義///////
combox.prototype.find=function(){
/*當(dāng)搜索到輸入框的值時(shí),下拉框自動(dòng)定位*/
var inputbox=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事件*/
var inputbox=document.getElementsByName("combox_"+this.name)[0]
inputbox.value=this.select.options[this.select.selectedIndex].text;
with(inputbox){select();focus()};
}
////////對(duì)象事件結(jié)束///////
/*公用定位函數(shù)(獲取控件絕對(duì)坐標(biāo))*/
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
}
/*結(jié)束*/
</script>
<script language="javascript">
var a=new combox("a","fason")
a.init()
</script>
</body>
</html>
相關(guān)文章
PDF.js前端開發(fā)使用代碼示例及實(shí)用技巧
pdf.js是一款Nozilla開發(fā)的、用于網(wǎng)頁(yè)上顯示pdf文檔的Javascript庫(kù),提供pdf文件的在線閱讀,這篇文章主要給大家介紹了關(guān)于PDF.js前端開發(fā)使用實(shí)用技巧的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04
JavaScript 中字符串和數(shù)組的概念解析與多角度對(duì)比區(qū)分
JavaScript中的字符串和數(shù)組是兩種重要的數(shù)據(jù)結(jié)構(gòu),各有特點(diǎn)和應(yīng)用場(chǎng)景,字符串主要用于文本處理,是不可變的;數(shù)組用于存儲(chǔ)有序集合,是可變的,理解它們的區(qū)別和應(yīng)用場(chǎng)景,有助于編寫更高效和易維護(hù)的代碼,感興趣的朋友跟隨小編一起看看吧2024-11-11
javascript適合移動(dòng)端的日期時(shí)間拾取器
這篇文章主要介紹了javascript適合移動(dòng)端的日期時(shí)間拾取器,提供了友好的日期和時(shí)間選擇操作界面,需要的朋友可以參考下2015-11-11
js實(shí)現(xiàn)連續(xù)英文字符自動(dòng)換行兼容ie6 ie7和firefox
英文字符自動(dòng)換行,通過(guò)js腳本截?cái)嘧址?此方法通用ie6,ie7,firefox,使用CSS控制強(qiáng)制換行實(shí)現(xiàn)不了的朋友可以嘗試下2013-09-09

