JSP中可编辑的下拉列表框

方法一:

<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>

<script language="javascript">

 function editable(select1){

    if(select1.value == ""){

       var newvalue = prompt("请输入","");

    if(newvalue){

       addSelected(select1,newvalue,newvalue);

    }

    }

 }

 

 function addSelected(fld1,value1,text1){

  if (document.all) {

       var Opt = fld1.document.createElement("OPTION");

    Opt.text = text1;

    Opt.value = value1;

    fld1.options.add(Opt);

    Opt.selected = true;

  }else{

       var Opt = new Option(text1,value1,false,false);

    Opt.selected = true;

    fld1.options[fld1.options.length] = Opt;

  }

 }

</script>

</head>

<body>

<select name="markcode" onChange="editable(this);">

 <option value="value1">选项一</option>

 <option value="">请输入</option>

</select>

</body>

</html>

方法二:

<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>

<style>

a{color:blue;text-decoration:none}

a:hover{color:red}

</style>

</head>

<body>

<table style="border:2px outset;background-color:#d2e8FF" width="250" height="100" align="center">

  <tr>

    <td width="100%" align="center" colspan="2"><b>可编辑下拉框</b></td>

  </tr>

  <tr>

    <td width="60%" height="30" align="center">

<select name="fason">

<option value="可编辑下拉框">可编辑下拉框</option>

<option value="作者:阿信">阿信</option>

</select>

    </td>

    <td width="40%" height="30" align="left">

    <input type=button value=" 取值 " onclick="alert(document.getElementsByName('combox_fason')[0].value)">

</td>

  </tr>

</table>

<script language="javascript">

/*

作者:fason(阿信)

日期:2003-7-1

版本:v1.0

备注:只作技术交流,如需转载请注明作者等有关信息,多谢合作

*/

function combox(obj,select){

this.obj=obj

this.name=select;

this.select=document.getElementsByName(select)[0];

/*要转换的下拉框*/

}

/*初始化对象*/

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()

}

/*初始化结束*/

////////对象事件定义///////

combox.prototype.find=function(){

/*当搜索到输入框的值时,下拉框自动定位*/

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()};

}

////////对象事件结束///////

/*公用定位函数(获取控件绝对坐标)*/

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>

<script language="javascript">

var a=new combox("a","fason")

a.init()

/*作用方法:

var obj=new combox(var1,var2)

var1:新生成的combox变量(如:a)

var2:原下拉框的name

obj.init():对象初始化

注意:后台取值时用combox_var2进行取值

*/

</script>

<p align="right">作者:<a href="http://fason.nease.net">fason(阿信)</a>欢迎交流!</p>

</body>

</html>

下面这段代码更强!

<input type="text" name="t">

<select name="s" onChange="t.value=this.options[this.selectedIndex].value;">

<option>-----------</option>

<option value="test">test</option>

<option value="haha">haha</option>

</select>
<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<style>

.table1{background-color:white;FONT-FAMILY: Courier New, Courier;font-size:12px}

.td_out{FONT-FAMILY: Courier New, Courier;font-size:12px;color:#000000;height:15px;border:1px solid #ffffff;}

.td_over{FONT-FAMILY: Courier New, Courier;font-size:12px;cursor:default;background-color:#3366cc;border:1px solid #000000;color:#ffffff;height:15px}

.slv{vertical-align:bottom;FONT-FAMILY: Courier New, Courier;font-size:12px;border-left-width:0;border-top-width:0;border-bottom-width:0;border-right:0px solid #000000;vertical-align:middle;height:18px;color:#000000}

.down{position:relative;left:-2px;font-size:11px;vertical-align:middle;width:16;height:16;color:#2050b0;background-color:#D0DFF7;border:1px solid #9fA3Ce;writing-mode:tb-rl;font-weight:bold

}

.seldiv{

position:absolute;z-index:1000;overflow-x:hidden;border-left:1px solid #000000;border-bottom:1px solid #000000;border-right:1px solid #000000;

SCROLLBAR-FACE-COLOR: #d0dff7;

SCROLLBAR-HIGHLIGHT-COLOR: #d0dff7;

SCROLLBAR-SHADOW-COLOR: #FFFFFF;

SCROLLBAR-3DLIGHT-COLOR: #FFFFFF;

SCROLLBAR-ARROW-COLOR: #ffffff;

SCROLLBAR-TRACK-COLOR: #ffffff;

SCROLLBAR-DARKSHADOW-COLOR: #d0dff7}

</style>

<script language="JavaScript">

document.onclick=hiddenDiv;

function getDivCount() {

 var arr=document.all;

 re=0;

 for (i=0;i<arr.length;i++) {

  str=arr[i].id; 

  if (str.indexOf("ZfDiv_")==0) {  

   re++; 

  }

 }

 return re;

}

function getI(ObjId) {//取得objId的最后一位数字

 for (i=0;i<ObjId.length;i++) {

  if (ObjId.charAt(i)=="_") return ObjId.substr(i+1,ObjId.length-1);

 }

 return 0;

}

function select_edit(TextObj){//鼠标经过高亮度

 TextObj.focus();TextObj.select();

}

function checkValue(ID){  

 var sl=document.all["ZfText_"+ID];

 var sv=document.all["ZfDiv_"+ID];

 var da=document.all["ZfData_"+ID];  

 sv.style.display=''

 

 for(i=0;i<da.rows.length;i++)da.rows[i].style.display=''

 

 for(i=0;i<da.rows.length;i++){

  if(da.rows[i].cells[0].innerText.indexOf(sl.value)!=0)da.rows[i].style.display='none';

  getPosition(ID);

 }

}

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

}

function getPosition(ID){

 var sv=document.all["ZfDiv_"+ID];

 var sl=document.all["ZfText_"+ID];

 var spn=document.all["ZfSpan_"+ID];

 var da=document.getElementByIdx("ZfData_"+ID);

 sv.style.pixelWidth=spn.offsetWidth;

 da.style.pixelWidth=sv.offsetWidth;

 sv.style.pixelLeft=getL(spn);

 sv.style.pixelTop=getT(spn)+sl.offsetHeight+3;

 if(da.offsetHeight>200){

  sv.style.pixelHeight=200;

  sv.style.overflowY='scroll';

 }

 else {

  sv.style.pixelHeight=da.offsetHeight;

  sv.style.overflowY='hidden';

 }

}

function dropDown(ID){

 var sv=document.all["ZfDiv_"+ID]

 var tb=document.all["ZfData_"+ID]

 

 if(sv.style.display=='none'){ 

  sv.style.display=''; 

  for(i=0;i<tb.rows.length;i++)tb.rows[i].style.display=''

  getPosition(ID); 

 } else { 

  sv.style.display='none';

 }

}//下拉摸拟层

function hiddenDiv(){

 var o=window.event.srcElement.id;

 var tb

 var sv

 if(o=="") {

  for (j=0;j<getDivCount();j++) {

   tb=document.getElementByIdx('ZfData_'+j);

   sv=document.getElementByIdx('ZfDiv_'+j);  

   for(i=0;i<tb.rows.length;i++) tb.rows[i].style.display='';

   sv.style.display='none';  

  }

 

 }

}//隐藏模拟层



function setValue(obj){

var i=getI(obj.parentElement.parentElement.parentElement.id);

//alert(obj.parentElement.parentElement.parentElement.id);

var sl=document.all["ZfText_"+i];

var sv=document.all['ZfDiv_'+i];

sl.value=obj.innerText;

sv.style.display='none';

//sldIndex=obj.parentElement.rowIndex;

}//给文本框赋值

function over(obj){

 obj.className="td_over"

 obj.title=obj.innerText

 obj.focus();

}//鼠标经过变色

function out(obj){

 obj.className="td_out"

}//鼠标离开还原

function String.prototype.Trim(){return this.replace(/(^\s*)|(\s*$)/g,'')}//自定义去空格函数Trim()



//增加list的接口,ID表示该组控件是页面中的第几个

function add(v,ID){

var sv=document.all['ZfDiv_'+ID];

if(!v.Trim()){return;}

var tb=document.all['ZfData_'+ID];

var c=tb.insertRow(tb.rows.length).insertCell();

c.innerHTML='<nobr>'+v.Trim()+'</nobr>';

c.onmouseover=new Function("over(this)");

c.onmouseout=new Function("out(this)");

c.onclick=new Function("setValue(this)");

c.className="td_out";

v='';

}

//增加inpnubox的接口,在页面中产生一个inputbox控件,下拉列表为空

function addText(name,DefValue) {

 var i=getDivCount();

 document.write('<span id="ZfSpan_'+i+'" style="border:1 solid #9CA0CB">');

 document.write('<input type="text" value="'+DefValue+'" name="'+name+'" id="ZfText_'+i+'" ondblclick="ZfDrop_'+i+'.click()" class="slv" onmouseover="select_edit(this)"  onkeyup="checkValue('+i+')"><input type=button id="ZfDrop_'+i+'" value=">" onclick="this.hideFocus=true;dropDown('+i+');" class="down" onmouseover="this.style.backgroundColor=#EEF3FD" onmouseout="this.style.backgroundColor=\'\'" onmousedown="this.style.backgroundColor=#ABC4F5" onmouseup="this.style.backgroundColor=\'\'"></span>');

 document.write('<div id="ZfDiv_'+i+'" class="seldiv" style="display:none;"><table id="ZfData_'+i+'" onselectstart="return false" border="0"  cellspacing="0" cellpadding="0" class="table1"></table></div>');

}

 

</script>

</head>

<body>

<script language="JavaScript">

addText("name1","a");

add("1234",0);

add("1234",0);

addText("name1","a");

add("1234",1);

add("1234",1);

</script>

</body>

</html>

 

你可能感兴趣的:(下拉列表)