我想要如此效果:一个文本框,点击后出现下拉的若干选项,点选其中某项后,所选择的文字填入文本框.同时文本框也可以手工填写.我想在客户端用脚本实现这样的效果,可是在下对javascript实在不懂,请知情人士赐教(给出代码最好),万分感激!

解决方案 »

  1.   

    这个用asp.net就可以实现阿,,,为什么要用javascript
      

  2.   

    to:aaron_lly
        asp.net好像没有组合框,只有下拉框.
      

  3.   

    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <SCRIPT language="javascript">
    <!--
    function display() {
        var nSelectedIndex
        nSelectedIndex = document.all("slt1").SelectedIndex;
        document.all.txtDisplay.value = document.all("slt1").options[nSelectedIndex].text;
    }
    -->
    </SCRIPT>
    </HEAD>
    <BODY>
    <H3>VBScript</H3><HR>
    <FORM>
    <input name="txtDisplay" type="text" >
    <select name="select" id="slt1"  onchange="display()">
              <option value="11"></option>
              <option value="22">2004/2/5 abc</option>
              <option value="33">2004/1/24 def</option>
              <option value="44">2004/1/17 ghi</option>
    </select>
    </FORM>
    </BODY>
    </HTML>
      

  4.   

    var nSelectedIndex 少个分号 :)
      

  5.   

    fangxinggood老兄的程序提示出错呀,不知道怎么回事.
    看了老兄的javascript却是感觉有学习的必要,呵呵
      

  6.   

    确实不是这个意思,我没有要用select这个html控件的意思,我还是用的服务器控件TextBox,只是想实现点击它,下面有选择项的客户端效果.请继续指点!
      

  7.   

    fangxinggood你没看清楚楼主的问题,楼主要的是一个Web页面上的ComboBox,既可以选择,也可以输入。这个东西在html里没有的,大多数的实现方法是用一个<input type="text">和一个<select>模拟实现,使用Javascript去控制显示以及数值的传递。这个问题在Web开发版很早就有一些解决方案了,楼主可以去那里找找Meizz做的一些帖子
      

  8.   

    你说的意思就是写一个WEB自定义控件,能手工输入也能通过下拉框选择?这个不难,你可以看一下MSDN关于做自定义控件的帮助。
      

  9.   

    minghui000(沉迷网络游戏) :能否给代码示例一观?不甚感激.
      

  10.   

    <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:1 solid #ffffff;}
    .td_over{FONT-FAMILY: Courier New, Courier;font-size:12px;cursor:default;background-color:#3366cc;border:1 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:0 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:1 solid #9fA3Ce;writing-mode:tb-rl;font-weight:bold;
    }
    .seldiv{
    position:absolute;z-index:1000;overflow-x:hidden;border-left:1 solid #000000;border-bottom:1 solid #000000;border-right:1 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.getElementById("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.getElementById('ZfData_'+j);
       sv=document.getElementById('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>
      

  11.   

    Combo很容易写啊!你想要贴代码给你,还是想明白怎样做然后自己做一个?